【问题标题】:Tabbed Dialog Box using Qt Designer使用 Qt 设计器的选项卡式对话框
【发布时间】:2014-01-02 17:37:13
【问题描述】:

我是 Qt 新手,在使用 Qt 设计器设计的 TabbedDialog 对话框时遇到问题。 我有一个对话框 dlg,我在上面放置了一个 tabWidget MyTabWidget,其中包含两个选项卡 Tab1 和 Tab2。我想为每个选项卡制作单独的 cpp 文件并在它们各自的文件中定义函数。我遇到的问题是如何在这些各自的文件中访问对话框 dlg 的 UI 小部件。

【问题讨论】:

    标签: qt qt-designer qtgui qdialog qtabwidget


    【解决方案1】:

    这里有几个步骤要采取,这在following documentation中有很好的解释。

    1) 包括#include "ui_foo.h"

    这是访问代码中的 UI 元素所必需的。这是可通过 QtDesigner 和 ui 编译器(又名)获得的文件。 uic进程。

    2) 要么继承 Ui::Foo 要么在你的类中有一个与之组合的对象。它会是这样的:

    class Foo : public QWidget
    {
        Q_OBJECT
    
    public:
        Foo(QWidget *parent = 0);
    
    private:
        Ui::Foo ui;
    };
    

    class Foo : public QWidget, private Ui::Foo
    {
        Q_OBJECT
    
    public:
        Foo(QWidget *parent = 0);
    };
    

    3) 然后您可以使用此实例访问由 QtDesigner 应用程序创建的小部件(类似于 ui->foo)。

    bool Foo::doStuff()
    {
        ui->foo()->doStuff();
    }
    

    您可能不希望在编写时拥有两个单独的源文件和类,但如果您愿意,上述步骤可以同时适用于两者。

    话虽如此,我认为最好阅读上述文档,因为它更详细地介绍了几种方法,以及如何访问 QtDesigner 生成的源代码中的 UI 组件。

    【讨论】:

      【解决方案2】:

      您可以将制表符指针传递给您要使用的函数。比如:

      void Class1::yourFunction1(QWidget *tab1);
      void Class2::yourFunction2(QWidget *tab2);
      

      您可以访问这些小部件选项卡,例如:

      ui->tab 
      

      如果它是在 QtDesigner 中创建的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多