0
私は、ユーザーがデータベース接続を選択できるウィザードページを持っています。データベース接続を表現するために、私はデータベース情報をラップするクラスを作成しました。選択したデータベース接続を外部からアクセス可能にするために、QWizardPageのフィールドメカニズムを使用したいが、それが動作するように動作していない。クラスプロパティのQWizardPage registerField()が機能しません
ヘッダー:
Q_PROPERTY(DBConnectionInfo connection READ getConnection NOTIFY connectionChanged)
CPP:
qRegisterMetaType<DBConnectionInfo>();
registerField("connection*", this, "connection", SIGNAL(connectionChanged(DBConnectionInfo)));
selected_connection = DBConnectionInfo("MyNewName", "MyServer", "MyDB", 3000, "MyUser", "MyPW");
emit connectionChanged(selected_connection);
std::cout << "Value of name: \"" << field("connection").value<DBConnectionInfo>().getName().toStdString() << "\"";
std::cout << "Value of property: \"" << property("connection").value<DBConnectionInfo>().getName().toStdString() << "\"";
結果:
だから、プロパティが適切に設定されていますが、値はフィールド機構を介してアクセスすることはできませんValue of name: ""
Value of property: "MyNewName"
。私は何が欠けている可能性がある任意のアイデア?
コンストラクタの「外側」で作業することは、たぶんストーリーの半分に過ぎません。ほとんどの場合、イベントキューが空になったら動作します。 –
私はボンネットの下で何が起こっているのか分かりません。また、ドキュメントには注釈もありません。おそらく 'initializePage'メソッド(おそらく最初の場所で使われることになっていた方法です)でフィールド呼び出しを行うだけでいいと思います。 –