0

私の質問はタイトルから明らかだと思いますが、そうではないかもしれません=)
詳細に説明しましょう... QDockWidgetを作成し、デザイナーを使用してサブクラスに変換しました(つまり、昇格しました)。 。

では、配置したウィジェットに適切にアクセスするにはどうすればよいですか?アイデアは、すべてのサブクラスのオブジェクトがサブクラス内で処理されるということです。問題は(ご存知かもしれませんが)それです

this->children().count()

これを返します:

QDockWidgetLayout(0x1022373d0) 
QDockWidgetTitleButton(0x102237510, name = "qt_dockwidget_floatbutton") 
QDockWidgetTitleButton(0x102235500, name = "qt_dockwidget_closebutton") 
QWidgetResizeHandler(0x102235de0) 
QAction(0x102221500) 

そして、それらのどれも私が手に入れたいQLabelsと他のtishを含んでいません)。ただし、ui_mainwindow.hを見ると、この問題に光が当てられています。ウィジェットは、親を持たないQWidgetであるdockWidgetContents_3にあります。したがって、唯一の方法はMainWinsowのui-> ...を介してアクセスすることであるように思われます。そして、uiを公開することを考えると、私は「非常に悲しいパンダ」になります...

前もって感謝します!

4

1 に答える 1

1

「QDockWidgetを作成し、デザイナーを使用してサブクラスに変換しました」と言う場合、これは、「promoteto...」アクションを使用してそれをのプレースホルダーに変換したことを意味すると考えられます。 QDockWidgetのコード化されたサブクラス。つまり、コードのバージョンをその場所に配置することを想定しています。デザイナにそのドックウィジェット内に配置されたウィジェットがある場合、それらはそのクラス定義に自動的に構成されません。それらが存在する場所は、同じドックウィジェットと並行して、UIオブジェクトの属性として存在します。

QLabelとQPushButtonをそのカスタムサブクラスの一部として構成したい場合は、視覚的なレイアウトの一部としてではなく、コードでそれらを定義する必要があります。次に、それらはその実際のサブクラスのメンバーになります。

今のところ、UIにネストされたQLabelが見つかると思います。

ui->dockWidgetContents_3
ui->pushButton_1
ui->label_1

(または、UIをクラスに含めることを選択した場合)

ここで、QDockWidgetのコンテンツ領域を視覚的にデザインできるようにしたいとします。あなたがするかもしれないことは、視覚的に別のウィジェットとしてそれをデザインすることです。次にdockWidgetContents、QDockWidgetをカスタムQWidgetにプロモートします。その後、このコンポジションを独自の子を持つウィジェットとして配置できるようになります。

ui->CustomDockWidget->widget()->label_1
于 2012-08-15T23:54:05.590 に答える