25 #include <QDateTimeEdit>    28 #include <QTextCharFormat>    29 #include <QCalendarWidget>    40   widget->
setDateTime( QDateTime::currentDateTime() );
    49     mQgsDateTimeEdit = qgsEditor;
    54   QDateTimeEdit *qtEditor = 
dynamic_cast<QDateTimeEdit *
>( editor );
    57     mQDateTimeEdit = qtEditor;
    60   if ( !mQDateTimeEdit )
    62     QgsDebugMsg( QStringLiteral( 
"Date/time edit widget could not be initialized because provided widget is not a QDateTimeEdit." ) );
    68   mQDateTimeEdit->setDisplayFormat( displayFormat );
    70   const bool calendar = 
config( QStringLiteral( 
"calendar_popup" ), 
true ).toBool();
    71   if ( calendar != mQDateTimeEdit->calendarPopup() )
    73     mQDateTimeEdit->setCalendarPopup( calendar );
    75   if ( calendar && mQDateTimeEdit->calendarWidget() )
    78     QTextCharFormat todayFormat;
    79     todayFormat.setBackground( QColor( 160, 180, 200 ) );
    80     mQDateTimeEdit->calendarWidget()->setDateTextFormat( QDate::currentDate(), todayFormat );
    83   const bool allowNull = 
config( QStringLiteral( 
"allow_null" ), 
true ).toBool();
    84   if ( mQgsDateTimeEdit )
    91         "For that the QGIS custom widget QgsDateTimeEdit needs to be used." ),
    92         tr( 
"field widgets" ) );
    95   if ( mQgsDateTimeEdit )
   101     connect( mQDateTimeEdit, &QDateTimeEdit::dateTimeChanged, 
this,  &QgsDateTimeEditWrapper::dateTimeChanged );
   107   return mQgsDateTimeEdit || mQDateTimeEdit;
   112   if ( mQgsDateTimeEdit )
   116 void QgsDateTimeEditWrapper::dateTimeChanged( 
const QDateTime &dateTime )
   118   switch ( 
field().type() )
   120     case QVariant::DateTime:
   130       if ( !dateTime.isValid() || dateTime.isNull() )
   136         const bool fieldIsoFormat = 
config( QStringLiteral( 
"field_iso_format" ), 
false ).toBool();
   138         if ( fieldIsoFormat )
   153   if ( !mQDateTimeEdit )
   154     return QVariant( 
field().type() );
   157   if ( mQgsDateTimeEdit )
   159     dateTime = mQgsDateTimeEdit->
dateTime();
   163     dateTime = mQDateTimeEdit->dateTime();
   166   switch ( 
field().type() )
   168     case QVariant::DateTime:
   172       return dateTime.date();
   175       return dateTime.time();
   178       const bool fieldIsoFormat = 
config( QStringLiteral( 
"field_iso_format" ), 
false ).toBool();
   180       if ( fieldIsoFormat )
   182         return dateTime.toString( Qt::ISODate );
   186         return dateTime.toString( fieldFormat );
   195   if ( !mQDateTimeEdit )
   199   switch ( 
field().type() )
   201     case QVariant::DateTime:
   204       dateTime = value.toDateTime();
   207       const bool fieldIsoFormat = 
config( QStringLiteral( 
"field_iso_format" ), 
false ).toBool();
   209       if ( fieldIsoFormat )
   211         dateTime = QDateTime::fromString( value.toString(), Qt::ISODate );
   215         dateTime = QDateTime::fromString( value.toString(), fieldFormat );
   220   if ( mQgsDateTimeEdit )
   226     mQDateTimeEdit->setDateTime( dateTime );
   232   if ( !mQDateTimeEdit )
   235   mQDateTimeEdit->setEnabled( enabled );
 QWidget * createWidget(QWidget *parent) override
This method should create a new widget with the provided parent. 
 
QVariant value() const override
Will be used to access the widget's value. 
 
static QgsMessageLog * messageLog()
Returns the application's message log. 
 
void setValue(const QVariant &value) override
 
void setEnabled(bool enabled) override
 
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary). 
 
void initWidget(QWidget *editor) override
This method should initialize the editor widget with runtime data. 
 
bool valid() const override
Returns true if the widget has been properly initialized. 
 
void valueChanged(const QDateTime &date)
signal emitted whenever the value changes. 
 
QgsDateTimeEditWrapper(QgsVectorLayer *layer, int fieldIdx, QWidget *editor, QWidget *parent=nullptr)
Constructor for QgsDateTimeEditWrapper. 
 
void showIndeterminateState() override
Sets the widget to display in an indeterminate "mixed value" state. 
 
void setEmpty()
Resets the widget to show no value (ie, an "unknown" state). 
 
void setAllowNull(bool allowNull)
Determines if the widget allows setting null date/time. 
 
void setDateTime(const QDateTime &dateTime)
setDateTime set the date time in the widget and handles null date times. 
 
Represents a vector layer which manages a vector based data sets. 
 
QDateTime dateTime() const
dateTime returns the date time which can eventually be a null date/time 
 
The QgsDateTimeEdit class is a QDateTimeEdit with the capability of setting/reading null date/times...