QtCreatorに同じクラスから昇格されたウィジェットが2つあります。しかし、私は両者に微妙な違いを持たせたいので、昇格したクラスがそれを区別するために使用できるUIファイルにいくつかの違いを渡したいと思います。動的プロパティは、UIエディタで移動する方法と同じように見えますが、私はプロモートされた各ウィジェットに動的プロパティを割り当てました。コードでは、私はプロパティにアクセスしようとしたが、オブジェクトが作成された後QtはsetProperty()
を呼び出しているためか(のみ利用でき、構築後のようです。Qt:qtcreatorから動的プロパティにいつアクセスできますか?
MyWidget::MyWidget(QWidget* parent) : QGLWidget(parent)
{
this->property("someProperty").toString(); // returns blank
}
void MyWidget::initializeGL()
{
this->property("someProperty").toString(); // returns string set in UI file
}
だから私の質問はどのように人々は、コンストラクタのためにこれらのプロパティを使用しますか気づきました私は、OpenGLを初期化することに関連していないかもしれないので、奇妙に思えます。私はまた、プロパティ変更された信号に接続し、そこに行うことができると思います。これ?
私はあなたの答えを正しいとマークしましたが、それはうまく機能していましたが、別の方法で行ってしまいました。私はちょうどこれらのプロパティを持つ薄いサブクラスを作成し、ビルド時に利用できるようにし、それらをQtクリエータで宣伝しました。 uiファイルにプロパティを持ち、別のinit関数を処理する必要があるよりもきれいに思えました。 – voodoogiant
確かに良いアプローチです。私はタブロイドに乗っていたので、タイピング速度のためにすぐに問題に遭遇しました。 –