IはQMLでそれを使用するモデルを書き、適切にすべてのプロパティを定義:QML [不定]エラー
class Model: public QObject {
Q_OBJECT
Q_PROPERTY(QString title READ title CONSTANT)
Q_PROPERTY(QString request READ request CONSTANT)
Q_PROPERTY(int first READ first WRITE setFirst NOTIFY firstChanged)
Q_PROPERTY(int second READ second WRITE setSecond NOTIFY secondChanged)
Q_PROPERTY(int minimumValue READ minimumValue CONSTANT)
Q_PROPERTY(int maximumValue READ maximumValue CONSTANT)
Q_PROPERTY(bool isRange READ isRange CONSTANT)
Q_PROPERTY(int result READ result WRITE setResult)
... setters/getters/signals ...
}
アン、私は前モデルを使用してQMLダイアログを作成したオブジェクトのコードを書いた:
をRangeInputDialog::Result RangeInputDialog::exec() const {
QQmlEngine engine;
QQmlComponent component(&engine);
component.loadUrl(QUrl("qrc:///ui-common/ui/RangeInputDialog.qml"));
if (!component.isReady()) {
qDebug() << "Could not load range input dialog";
qDebug() << component.errors();
return Result::Error;
}
QQmlContext context(&engine);
context.setContextProperty("rangeDialogModel", &m_model);
QScopedPointer<QObject> window(component.create(&context));
if (window.isNull()) {
qDebug() << "Could not instance range input dialog";
return Result::Error;
}
QEventLoop loop;
QObject::connect(window.data(), SIGNAL(closing(QQuickCloseEvent *)), &loop, SLOT(quit()));
if (window->setProperty("visible", true)) {
loop.exec();
} else {
qDebug() << "Could not show range input dialog";
return Result::Error;
}
return static_cast<Result>(m_model.result());
}
setContextProperty
はQMLダイアログでモデルを結合し、コンポーネントを作成した後、それはエラーの束をスロー:
qrc:///ui-common/ui/RangeInputDialog.qml:23:9: Unable to assign [undefined] to QString
qrc:///ui-common/ui/RangeInputDialog.qml:39:10: Unable to assign [undefined] to QString
qrc:///ui-common/ui/RangeInputDialog.qml:58:19: Unable to assign [undefined] to double
qrc:///ui-common/ui/RangeInputDialog.qml:57:19: Unable to assign [undefined] to double
qrc:///ui-common/ui/RangeInputDialog.qml:56:12: Unable to assign [undefined] to double
qrc:///ui-common/ui/RangeInputDialog.qml:70:14: Unable to assign [undefined] to bool
qrc:///ui-common/ui/RangeInputDialog.qml:68:19: Unable to assign [undefined] to double
qrc:///ui-common/ui/RangeInputDialog.qml:67:12: Unable to assign [undefined] to double
誰もがこの問題について知っていますか? 私は透明な溶液で同じコードを使用しようとしましたが、それがうまく動作します。
ソリューション
[OK]を、私は、コンパイラが警告をスローしなかった理由を知りませんが、exec
方法でconst
指定子の除去は、問題を解決しました。
それは何も変わっていません。モデルとQMLだけで接続されたC++とQMLはGUIにのみ使用されていますが、十分なパフォーマンスを提供できません。 –
@RealFreshは、正しいコンテキストにアクセスする方法についての情報を追加するために私のポストを編集します。 – GrecKo
私はconstのみを削除し、問題は消えました。とにかく、お返事ありがとうございます。 –