gpt4 book ai didi

c++ - Qt4:从 QDockedWidget 的子类访问 QtDesigner 创建的小部件

转载 作者:行者123 更新时间:2023-11-28 07:59:04 25 4
gpt4 key购买 nike

我打赌我的问题从它的标题来看是显而易见的,但也可能不是 =)
因此,让我详细解释一下……我创建了一个 QDockWidget,然后使用设计器将其转换(我的意思是提升为……)为一个子类。

那么如何正确访问我放置的小部件?这个想法是所有子类的对象都在子类中处理。问题(如您所知)是

this->children().count()

返回这个:

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

而且它们都不包含 QLabel 和其他我想动手的东西)。然而,查看 ui_mainwindow.h 可以对此事有所了解。小部件位于 dockWidgetContents_3 上,它是一个没有父级的 QWidget。所以唯一的方法似乎是通过 MainWinsow 的 ui-> 来访问它......并且想到公开 ui 让我成为一个“非常悲伤的 Pandas ”......

提前致谢!

最佳答案

当你说“我已经创建了一个 QDockWidget,然后使用设计器将它转换成一个子类”时,我唯一能想到的意思是你使用了“提升到...” Action 将它变成了QDockWidget 的编码子类的占位符。这意味着它希望将您代码中的版本放在该位置。如果您的设计器具有放置在该停靠小部件中的小部件,它们将不会自动组合到该类定义中。他们将居住的地方作为 ui 对象的属性,与同一个停靠小部件平行。

如果您想将 QLabel 和 QPushButton 组合成该自定义子类的一部分,那么您需要做的是在代码中定义它们,而不是作为视觉布局的一部分。然后他们将成为该实际子类的成员。

截至目前,我相信您会在您的用户界面上找到一个嵌套的 QLabel:

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

(或者您选择将您的用户界面包含在您的类(class)中)

现在假设您仍希望能够直观地设计 QDockWidget 的内容区域。您可能要做的是将其设计为视觉上的单独小部件。然后将 QDockWidget 的 dockWidgetContents 提升到您的自定义 QWidget。然后它将能够将此组合作为一个小部件放置,并带有自己的子项。

ui->CustomDockWidget->widget()->label_1

关于c++ - Qt4:从 QDockedWidget 的子类访问 QtDesigner 创建的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com