2017-07-26 98 views
-1

我创建了一个Qt的Desginer主窗口,它具有以下结构QT5设计和封装

  • Ui_MainWindow
    • VerticalLayout的
      • QTabWidget
        • 小工具(* A )
          • QChart
          • QChart

UIC的生成头文件 “ui_mainwindow.h”。这个头文件包含所有sub(subsub,subsubsub,...)小部件的引用。在我看来,这不是很好的封装。

我找到了一种方法来设置Qt设计器中不同窗口小部件的自定义类。 因为我必须手动编写这些类,所以我没有对子窗口小部件的访问/引用。我只能控制小部件本身。仍然所有的小部件都在MainWindow UI中被引用。

有没有办法为每个(或某些选定的)小部件生成单独的类?我想拦截* A并访问儿童QCharts。

谢谢

+0

您可以更改UI类的处理方式。该设置位于Creator设置中的C++ - > Qt Class Generation中。你有三个选择,这里有记录:http://doc.qt.io/qt-5/designer-using-a-ui-file.html –

+0

好吧,我想我有一个解决方案。我只需要用自定义类实现自己的层次结构,并将指针传递给生成的UI类到这个层次结构。尽管如此,我认为在生成的头文件中将UI XML中的深层次结构展平并不是最佳做法。 – Soccertrash

回答

1

即使你已经可以“拦截A”在当前的形式。你当然可以将A分隔在不同的部分,然后在你的主窗口中添加一个QWidget,右键单击它并将其提升为A

+0

你有具体的例子吗?谢谢 – Soccertrash

+0

这里很难给出没有代码涉及的例子。您可以查看http://doc.qt.io/qt-5/designer-using-custom-widgets.html#promoting-widgets以获得指导说明 – IlBeldus