@@ -28,6 +28,7 @@ QgsDateTimeEdit::QgsDateTimeEdit( QWidget *parent )
28
28
: QDateTimeEdit( parent )
29
29
, mAllowNull( true )
30
30
, mIsNull( true )
31
+ , mIsEmpty( false )
31
32
{
32
33
mClearButton = new QToolButton ( this );
33
34
mClearButton ->setIcon ( QgsApplication::getThemeIcon ( " /mIconClear.svg" ) );
@@ -57,9 +58,9 @@ void QgsDateTimeEdit::setAllowNull( bool allowNull )
57
58
{
58
59
mAllowNull = allowNull;
59
60
60
- mNullLabel ->setVisible ( mAllowNull && mIsNull );
61
- mClearButton ->setVisible ( mAllowNull && !mIsNull );
62
- lineEdit ()->setVisible ( !mAllowNull || !mIsNull );
61
+ mNullLabel ->setVisible (( mAllowNull && mIsNull ) && ! mIsEmpty );
62
+ mClearButton ->setVisible ( mAllowNull && ( !mIsNull || mIsEmpty ) );
63
+ lineEdit ()->setVisible (( !mAllowNull || !mIsNull ) && ! mIsEmpty );
63
64
}
64
65
65
66
@@ -69,6 +70,13 @@ void QgsDateTimeEdit::clear()
69
70
emit dateTimeChanged ( QDateTime () );
70
71
}
71
72
73
+ void QgsDateTimeEdit::setEmpty ()
74
+ {
75
+ mNullLabel ->setVisible ( false );
76
+ lineEdit ()->setVisible ( false );
77
+ mClearButton ->setVisible ( mAllowNull );
78
+ }
79
+
72
80
void QgsDateTimeEdit::mousePressEvent ( QMouseEvent* event )
73
81
{
74
82
QRect lerect = rect ().adjusted ( 0 , 0 , -spinButtonWidth (), 0 );
@@ -80,6 +88,7 @@ void QgsDateTimeEdit::mousePressEvent( QMouseEvent* event )
80
88
81
89
void QgsDateTimeEdit::changed ( const QDateTime & dateTime )
82
90
{
91
+ mIsEmpty = false ;
83
92
mIsNull = dateTime.isNull ();
84
93
mNullLabel ->setVisible ( mAllowNull && mIsNull );
85
94
mClearButton ->setVisible ( mAllowNull && !mIsNull );
@@ -98,6 +107,8 @@ int QgsDateTimeEdit::frameWidth() const
98
107
99
108
void QgsDateTimeEdit::setDateTime ( const QDateTime& dateTime )
100
109
{
110
+ mIsEmpty = false ;
111
+
101
112
// set an undefined date
102
113
if ( !dateTime.isValid () || dateTime.isNull () )
103
114
{
@@ -107,6 +118,7 @@ void QgsDateTimeEdit::setDateTime( const QDateTime& dateTime )
107
118
{
108
119
QDateTimeEdit::setDateTime ( dateTime );
109
120
mIsNull = false ;
121
+ changed ( dateTime );
110
122
}
111
123
}
112
124
0 commit comments