diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2012-03-21 20:41:57 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-28 02:01:49 +0200 |
commit | c3e1abad4e141e6e9d876e5cff194c473a2654eb (patch) | |
tree | 6878ee94b8901d402332a027e7081631f8ddcba6 /src/widgets | |
parent | e7a6dacf805602eb76786244da76dae29624bfb7 (diff) |
Add USER properties to QDateEdit and QTimeEdit.
Both classes had such components before, but there were issues with
the NOTIFY signal not being in the same class as the Q_PROPERTY.
This patch solves that problem by using a signal of a different name.
Task-number: QTBUG-15731
Change-Id: Ibc7ce4dba8a6b88c05d62a90e14d0101c5cd3082
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qitemdelegate.cpp | 12 | ||||
-rw-r--r-- | src/widgets/itemviews/qstyleditemdelegate.cpp | 12 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit.cpp | 20 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit.h | 8 |
4 files changed, 28 insertions, 24 deletions
diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp index 419c62ff65..6c62378009 100644 --- a/src/widgets/itemviews/qitemdelegate.cpp +++ b/src/widgets/itemviews/qitemdelegate.cpp @@ -555,18 +555,6 @@ void QItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) con QVariant v = index.data(Qt::EditRole); QByteArray n = editor->metaObject()->userProperty().name(); - // ### Qt 5: remove - // A work-around for missing "USER true" in qdatetimeedit.h for - // QTimeEdit's time property and QDateEdit's date property. - // It only triggers if the default user property "dateTime" is - // reported for QTimeEdit and QDateEdit. - if (n == "dateTime") { - if (editor->inherits("QTimeEdit")) - n = "time"; - else if (editor->inherits("QDateEdit")) - n = "date"; - } - // ### Qt 5: give QComboBox a USER property if (n.isEmpty() && editor->inherits("QComboBox")) n = d->editorFactory()->valuePropertyName(v.userType()); diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp index 93893afaa8..b27dcb0a7b 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.cpp +++ b/src/widgets/itemviews/qstyleditemdelegate.cpp @@ -492,18 +492,6 @@ void QStyledItemDelegate::setEditorData(QWidget *editor, const QModelIndex &inde QVariant v = index.data(Qt::EditRole); QByteArray n = editor->metaObject()->userProperty().name(); - // ### Qt 5: remove - // A work-around for missing "USER true" in qdatetimeedit.h for - // QTimeEdit's time property and QDateEdit's date property. - // It only triggers if the default user property "dateTime" is - // reported for QTimeEdit and QDateEdit. - if (n == "dateTime") { - if (editor->inherits("QTimeEdit")) - n = "time"; - else if (editor->inherits("QDateEdit")) - n = "date"; - } - // ### Qt 5: give QComboBox a USER property if (n.isEmpty() && editor->inherits("QComboBox")) n = d->editorFactory()->valuePropertyName(v.userType()); diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index 3d0996a9f5..5e808c1ab5 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -1549,6 +1549,7 @@ void QDateTimeEdit::mousePressEvent(QMouseEvent *event) QTimeEdit::QTimeEdit(QWidget *parent) : QDateTimeEdit(QDATETIMEEDIT_TIME_MIN, QVariant::Time, parent) { + connect(this, SIGNAL(timeChanged(QTime)), SIGNAL(userTimeChanged(QTime))); } /*! @@ -1561,6 +1562,15 @@ QTimeEdit::QTimeEdit(const QTime &time, QWidget *parent) { } +/*! + \fn void QTimeEdit::userTimeChanged(const QTime &time) + + This signal only exists to fully implement the time Q_PROPERTY on the class. + Normally timeChanged should be used instead. + + \internal +*/ + /*! \class QDateEdit @@ -1603,6 +1613,7 @@ QTimeEdit::QTimeEdit(const QTime &time, QWidget *parent) QDateEdit::QDateEdit(QWidget *parent) : QDateTimeEdit(QDATETIMEEDIT_DATE_INITIAL, QVariant::Date, parent) { + connect(this, SIGNAL(dateChanged(QDate)), SIGNAL(userDateChanged(QDate))); } /*! @@ -1615,6 +1626,15 @@ QDateEdit::QDateEdit(const QDate &date, QWidget *parent) { } +/*! + \fn void QDateEdit::userDateChanged(const QDate &date) + + This signal only exists to fully implement the date Q_PROPERTY on the class. + Normally dateChanged should be used instead. + + \internal +*/ + // --- QDateTimeEditPrivate --- diff --git a/src/widgets/widgets/qdatetimeedit.h b/src/widgets/widgets/qdatetimeedit.h index ffb8503d5e..07fc2b04fb 100644 --- a/src/widgets/widgets/qdatetimeedit.h +++ b/src/widgets/widgets/qdatetimeedit.h @@ -205,17 +205,25 @@ private: class Q_WIDGETS_EXPORT QTimeEdit : public QDateTimeEdit { Q_OBJECT + Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY userTimeChanged USER true) public: QTimeEdit(QWidget *parent = 0); QTimeEdit(const QTime &time, QWidget *parent = 0); + +Q_SIGNALS: + void userTimeChanged(const QTime &time); }; class Q_WIDGETS_EXPORT QDateEdit : public QDateTimeEdit { Q_OBJECT + Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY userDateChanged USER true) public: QDateEdit(QWidget *parent = 0); QDateEdit(const QDate &date, QWidget *parent = 0); + +Q_SIGNALS: + void userDateChanged(const QDate &date); }; Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections) |