Remove workaround for QComboBox not having a USER property.

QComboBox does in fact have a user property
since b1b87a73012342dc1619a8e907ea9954d59ca564.

Change-Id: I24eb2ef267cec5d8a9f7348954b703fa6df04fa5
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: David Faure <faure@kde.org>
This commit is contained in:
Stephen Kelly 2012-03-21 20:42:50 +01:00 committed by Qt by Nokia
parent c3e1abad4e
commit dc6a1d186e
3 changed files with 31 additions and 8 deletions

View File

@ -551,13 +551,9 @@ void QItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) con
Q_UNUSED(editor);
Q_UNUSED(index);
#else
Q_D(const QItemDelegate);
QVariant v = index.data(Qt::EditRole);
QByteArray n = editor->metaObject()->userProperty().name();
// ### Qt 5: give QComboBox a USER property
if (n.isEmpty() && editor->inherits("QComboBox"))
n = d->editorFactory()->valuePropertyName(v.userType());
if (!n.isEmpty()) {
if (!v.isValid())
v = QVariant(editor->property(n).userType(), (const void *)0);

View File

@ -488,13 +488,9 @@ void QStyledItemDelegate::setEditorData(QWidget *editor, const QModelIndex &inde
Q_UNUSED(editor);
Q_UNUSED(index);
#else
Q_D(const QStyledItemDelegate);
QVariant v = index.data(Qt::EditRole);
QByteArray n = editor->metaObject()->userProperty().name();
// ### Qt 5: give QComboBox a USER property
if (n.isEmpty() && editor->inherits("QComboBox"))
n = d->editorFactory()->valuePropertyName(v.userType());
if (!n.isEmpty()) {
if (!v.isValid())
v = QVariant(editor->property(n).userType(), (const void *)0);

View File

@ -58,6 +58,7 @@
#include <qtreewidget.h>
#include <QItemDelegate>
#include <QComboBox>
#include <QAbstractItemDelegate>
#include <QTextEdit>
#include <QPlainTextEdit>
@ -228,6 +229,7 @@ private slots:
void editorEvent();
void enterKey_data();
void enterKey();
void comboBox();
void task257859_finalizeEdit();
void QTBUG4435_keepSelectionOnCheck();
@ -1205,6 +1207,35 @@ void tst_QItemDelegate::QTBUG4435_keepSelectionOnCheck()
QCOMPARE(model.item(0)->checkState(), Qt::Checked);
}
void tst_QItemDelegate::comboBox()
{
QTableWidgetItem *item1 = new QTableWidgetItem;
item1->setData(Qt::DisplayRole, true);
QTableWidget widget(1, 1);
widget.setItem(0, 0, item1);
widget.show();
widget.editItem(item1);
QTestEventLoop::instance().enterLoop(1);
QComboBox *boolEditor = qFindChild<QComboBox*>(widget.viewport());
QVERIFY(boolEditor);
QCOMPARE(boolEditor->currentIndex(), 1); // True is selected initially.
// The data must actually be different in order for the model
// to be updated.
boolEditor->setCurrentIndex(0);
QCOMPARE(boolEditor->currentIndex(), 0); // Changed to false.
widget.clearFocus();
widget.setFocus();
QVariant data = item1->data(Qt::EditRole);
QCOMPARE(data.userType(), (int)QMetaType::Bool);
QCOMPARE(data.toBool(), false);
}
// ### _not_ covered: