0

QDataWidgetMapper を使用して一連のウィジェットに表示されているモデルがあります。そのようなフィールドの 1 つは、オプションの 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 に昇格させたことは確かですが、QDataWidgetMappercurrentTextは、書き込み可能なカスタム ユーザー プロパティではなく、デフォルトの読み取り専用ユーザー プロパティを使用しているようですmappingText

何か不足していますか?継承されたクラスのユーザー プロパティをオーバーライドできませんか?

編集: この問題は Qt 5.3.1 で修正されていることを認識していますが、当面は Qt 4 で立ち往生しているため、ソースの編集を伴わない回避策を考え出そうとしています。

4

0 に答える 0