0

QWidgetベースの QtDesigner ui フォームを設計しました。Form1 としましょう。プッシュボタンとラベルをいくつか追加しました。ここで、別の QWidget ベースの qt ui デザイナー フォームを設計しました。それを Form2 と呼びましょう。Form1 をロードしたい Form 2 に QFrame があります。

いくつか読んだところ、QFrameを右クリックしてプロモートを選択できることがわかりました。基本クラスを QFrame として置きます。クラス名を Form1 に昇格。ヘッダー ファイルは form1.h です。

次のようなエラーが表示されます。

Form1 has no member named 'setFrameShape'
Form1 has no member named 'setFrameShadow'

のように基本クラスを変更しましたQWidget。Form2のQFrameにForm1をロードしませんでした

どんな助けでも大歓迎です。

編集:

基本クラスを as として使用QFrameし、ui_form2.h の次の行をコメントアウトしたところ、機能し、機能frame->setFrameShape()frame->setFrameShadow()ました。

それを行うためのより良い方法があれば、親切に教えてください

4

1 に答える 1

0

デザイナーでウィジェットをプロモートすることは、「これが <Standard Widget> のように見えることはわかっていますが、コードを生成するときは、実際にはここで <More Specialized Widget> を作成してほしい」と言う方法です。昇格するウィジェット (および昇格の基本クラス) は、昇格先のタイプの祖先であるタイプである必要があります。

特定のケースでは、昇格したウィジェットのベースは QWidget (QFrame ではなく) である必要があります。これは Form1 のタイプであるためです。フレーム内にプレーンな QWidget を配置し、フレームの代わりにそのウィジェットを宣伝する必要があります。

于 2013-11-21T16:17:33.513 に答える