QgsDateTimeEdit::QgsDateTimeEdit( QWidget *parent ) : QDateTimeEdit( parent ) { mClearButton = new QToolButton( this ); mClearButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconClearText.svg" ) ) ); mClearButton->setCursor( Qt::ArrowCursor ); mClearButton->setStyleSheet( QStringLiteral( "position: absolute; border: none; padding: 0px;" ) ); mClearButton->hide(); connect( mClearButton, &QAbstractButton::clicked, this, &QgsDateTimeEdit::clear ); mNullLabel = new QLineEdit( QgsApplication::nullRepresentation(), this ); mNullLabel->setReadOnly( true ); mNullLabel->setStyleSheet( QStringLiteral( "position: absolute; border: none; font-style: italic; color: grey;" ) ); mNullLabel->hide(); setStyleSheet( QStringLiteral( ".QWidget, QLineEdit, QToolButton { padding-right: %1px; }" ).arg( mClearButton->sizeHint().width() + spinButtonWidth() + frameWidth() + 1 ) ); QSize msz = minimumSizeHint(); setMinimumSize( std::max( msz.width(), mClearButton->sizeHint().height() + frameWidth() * 2 + 2 ), std::max( msz.height(), mClearButton->sizeHint().height() + frameWidth() * 2 + 2 ) ); connect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed ); // init with current time so mIsNull is properly initialized QDateTimeEdit::setDateTime( QDateTime::currentDateTime() ); setMinimumEditDateTime(); }
QgsDateTimeEdit::QgsDateTimeEdit( QWidget *parent ) : QDateTimeEdit( parent ) { QIcon clearIcon = QgsApplication::getThemeIcon( "/mIconClearText.svg" ); mClearAction = new QAction( clearIcon, tr( "clear" ), this ); mClearAction->setCheckable( false ); lineEdit()->addAction( mClearAction, QLineEdit::TrailingPosition ); mClearAction->setVisible( mAllowNull ); connect( mClearAction, &QAction::triggered, this, &QgsDateTimeEdit::clear ); connect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed ); // enable calendar widget by default so it's already created setCalendarPopup( true ); setMinimumEditDateTime(); // init with current time so mIsNull is properly initialized QDateTimeEdit::setDateTime( QDateTime::currentDateTime() ); }