QDataWidgetMapper忽略继承

时间:2014-08-27 18:22:22

标签: qt inheritance qt4 qproperty

我有一个使用QDataWidgetMapper在一组小部件中显示的模型。一个这样的字段是由QStringList选项填充的QComboBox,但映射似乎不起作用。

QComboBox的用户属性是currentText()函数,它没有相应的setCurrentText()函数用于写入,因此映射失败并显示警告Warning: QComboBox::setProperty: Property "currentText" invalid, read-only or does not exist

因此,我创建了一个简单的自定义QComboBox,如下所示:

class MappingComboBox : public QComboBox
{
    Q_OBJECT
public:
    Q_PROPERTY(QString mappingText READ currentText WRITE setCurrentText USER true)

    explicit MappingComboBox(QWidget *parent = 0) : QComboBox(parent) {}
    QString currentText() const { return QComboBox::currentText(); }

public slots:
    void setCurrentText(const QString& s) { setCurrentIndex(findText(s); }
};

但我仍然得到相同的映射错误Warning: QComboBox::setProperty: Property "currentText" invalid, read-only or does not exist。我非常确定我已经将我的小部件提升为MappingComboBoxes,但QDataWidgetMapper似乎仍然使用默认的只读用户属性currentText而不是可写的自定义用户属性mappingText

我错过了什么吗?你能否覆盖继承类的用户属性?

编辑:我认识到这个问题已在Qt 5.3.1中得到修复,但我暂时停留在Qt 4中,所以我试图想出一个不涉及编辑源代码的解决方法。

0 个答案:

没有答案