代码之家  ›  专栏  ›  技术社区  ›  Anand

访问qt-ui中的子ui元素

  •  3
  • Anand  · 技术社区  · 15 年前

    我已经使用qt设计器定义了一个UI(我们称之为myUI),并在我的应用程序中使用它。我需要访问所有子部件( QToolButton S)在MYUI中。我想把所有的子桥作为 QObjectList .

    有什么办法吗?

    这个 QObject::children() 在这里不起作用,因为当将.UI文件转换为C++类时,QTUI UI编译器不将UIYMYUI类定义为任何子类。 QObject 派生类。有没有办法强迫它这样做,然后使用 children() 功能?

    谢谢。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Ton van den Heuvel    15 年前

    呼叫 children() 在顶级小部件实例上。

    假设您的顶级小部件称为“tlwidget”:

    myUI->tlWidget->children()

        2
  •  1
  •   Idan K    15 年前

    通常情况下,您要么继承自UI类,要么将其作为成员并调用它的SetupUI方法,然后发送 this 作为参数。qt creator/designer中的默认值是将其作为成员,命名为 ui .
    您可以使用此成员访问表单中定义的任何小部件。

        3
  •  0
  •   BastiBen    15 年前

    你可能会发现这很有趣:

        4
  •  0
  •   smerlin    15 年前

    如何使用用户界面?

    (a)类似于:

    class MyWidget: public QWidget, protected myUI 
    {
    //...
    };
    

    (b)或类似于:

    class MyWidget: public QWidget
    {
    protected:
        myUI ui;
    };
    

    两种情况的解决方案都类似,假设您调用 setupUi(this) ui.setupUi(this) 在MyWidget的构造函数中

    SetupUI(QWidget*P)将UI的每个小部件注册为QWidget P的子部件, 因此,您可以通过调用p的children()函数轻松访问它们:

    this->children(); //"this" refers to an object of MyWidget