QDate QtopiaInputDialog::getDate(QWidget *parent, const QString &title, const QString &label, const QDate &date, const QDate &minDate, const QDate &maxDate, bool *ok) { #ifdef CALENDAR_FOR_DATE QCalendarWidget *cal = new QCalendarWidget(); cal->setSelectedDate(date); cal->setMinimumDate(minDate); cal->setMaximumDate(maxDate); cal->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader); QTextCharFormat headerFormat = cal->headerTextFormat(); headerFormat.setBackground(QApplication::palette().window()); headerFormat.setForeground(QApplication::palette().windowText()); cal->setHeaderTextFormat(headerFormat); QWidget *navBar = cal->findChild<QWidget*>("qt_calendar_navigationbar"); if (navBar) navBar->setBackgroundRole(QPalette::Window); QtopiaInputDialog dlg(parent, title, label, cal); bool accepted = (QtopiaApplication::execDialog(&dlg) == QDialog::Accepted); if (ok) *ok = accepted; return cal->selectedDate(); #else QDateEdit *de = new QDateEdit(date); de->setMinimumDate(minDate); de->setMaximumDate(maxDate); QtopiaInputDialog dlg(parent, title, label, de); bool accepted = (QtopiaApplication::execDialog(&dlg) == QDialog::Accepted); if (ok) *ok = accepted; return de->date(); #endif }
void BlDateSearch::s_searchFecha() { BL_FUNC_DEBUG QDialog *diag = new QDialog ( 0 ); diag->setModal ( true ); QCalendarWidget *calend = new QCalendarWidget ( diag ); /// Se pone el 1er dia del calendario a lunes. calend->setFirstDayOfWeek ( Qt::Monday ); /// Evitar fechas demasiado antiguas calend->setMinimumDate( QDate ( 1900, 1, 1 ) ); /// Si el campo estaba vacío, seleccionar una fecha imposible, pero mostrar el mes actual if ( m_textoFecha->text().isEmpty() ) { calend->setSelectedDate ( calend->minimumDate() ); calend->setCurrentPage ( QDate::currentDate().year(), QDate::currentDate().month() ); } /// Si ya hay una fecha en el campo, abrir el calendario con ese día seleccionado inicialmente else { calend->setSelectedDate ( blNormalizeDate ( m_textoFecha->text() ) ); } connect ( calend, SIGNAL ( activated ( const QDate & ) ), diag, SLOT ( accept() ) ); /// Creamos un layout donde estara el contenido de la ventana y la ajustamos al QDialog /// para que sea redimensionable y aparezca el titulo de la ventana. QHBoxLayout *layout = new QHBoxLayout; layout->addWidget ( calend ); layout->setMargin ( 0 ); layout->setSpacing ( 0 ); diag->setLayout ( layout ); diag->setWindowTitle ( _ ( "Seleccione fecha" ) ); diag->exec(); /// Si la fecha es imposible, significa que el usuario no ha seleccionado una fecha /// y su campo debe quedarse como estaba: vacío if ( calend->selectedDate() != QDate ( 1900, 1, 1 ) ) { m_textoFecha->setText ( calend->selectedDate().toString ( "dd/MM/yyyy" ) ); } /// Liberamos la memoria delete layout; delete calend; delete diag; emit ( valueChanged ( m_textoFecha->text() ) ); emit ( editingFinished () ); }
int main(int argc, char **argv) { QApplication app(argc, argv); QCalendarWidget calendar; calendar.setSelectedDate(calendar.selectedDate().addDays(3)); calendar.setGridVisible(true); calendar.show(); QCalendarWidget calendarMin; calendarMin.setMinimumDate(calendarMin.selectedDate().addDays(-7)); calendarMin.setGridVisible(true); calendarMin.show(); QCalendarWidget calendarMax; calendarMax.setMaximumDate(calendarMax.selectedDate().addDays(7)); calendarMax.setGridVisible(true); calendarMax.show(); return app.exec(); }