Qt设计器:嵌套小部件不是成员
Qt designer: nested widget is not a member?
我使用 Qt Creator 3.2.1。使用Qt设计器,我做了基本设计:我通过添加一个普通的QWidget并将其提升到我的自定义窗口,在我的主窗口中添加一个自定义小部件(CustomWidget小部件)。在该自定义小部件中,我添加了一个QGraphicsView(QGraphicsView视图)。
Qt Designer的对象浏览器正确显示项目的层次结构:小部件内的视图和主窗口中的小部件。
但是,表单生成的 ui_mainwindow.h 给了我:
// in ui_mainwindow.h
class Ui_MainWindow
{
public:
CustomWidget *widget;
QGraphicsView *view;
// ...
};
当我真正期望时:
// in ui_mainwindow.h
class Ui_MainWindow
{
public:
CustomWidget *widget;
// ...
};
// in customwidget.h
class CustomWidget
{
public:
QGraphicsView *view;
// ...
};
另一个小部件的嵌套小部件不应该是它的成员吗?
如何在Qt设计器中调整我的类设计以使小部件的视图成为成员?
在Qt
中,用于定义小部件层次结构的规则不是包含,而是父级。 如果 widget2
WidgetType1
是 widget1
的父级,则 类型的widget1
将绘制在类型 WidgetType2
widget2
内,而不是如果类WidgetType2
包含类型 WidgetType2
的成员。 widget2
可以通过在 widget2
的构造函数中将widget2
作为父级传递或使用 widget2.setParent(widget1);
来设置widget1
的父级。布局还可以定义Parent/child
层次结构。
是的,您可以拥有包含和定义其他对象的对象类型,但是如果您不将this
作为父对象传递给成员对象,则成员对象将不会在容器类类型小部件中绘制。
在您的情况下,不需要有多个类,您只需要将要成为容器的对象设置为您想要成为子级的对象。有关更多信息,我建议您阅读布局管理和对象树和所有权的Qt
文档。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 在运行时为随机分布类成员设置最小和最大边界?
- 是否值得使用位移在单个字节中存储多个小数据成员?
- 为什么要返回对小类成员的 const 引用?
- 我看到将我的类成员函数指定为内联实际上会增加执行时间,即使函数体非常小
- 在Union UB中,写作超出了较小尺寸的成员的规模
- enable_if:没有参数的 void 成员函数的最小示例
- C 类的设计:其他类成员中类成员的共同用途;小界面与小课
- C++/SFML显示小精灵成员被鼠标点击更改的小故障
- 使用 STL 查找列表中成员的最小值<MyStruct>
- 排序类对象数据成员从大到小
- C++ 创建小部件数组
- 在类体外部定义的成员函数上的 sfinae
- 使用 move std::string 的 .data() 成员不适用于小字符串?
- Qt设计器:嵌套小部件不是成员
- C++结构成员函数定义如果在结构体外部定义,则它们会有所不同
- 成员函数体内部的类成员访问
- 从结构体内部调用成员函数指针所指向的函数
- 未初始化的引用成员"小部件::处理程序"
- 如何交换2D阵列的最大和最小成员索引