【发布时间】:2016-08-17 22:54:57
【问题描述】:
我有一些从QWidget 或QFrame 推广的自定义小部件,但我希望构造函数能够将属性列表设置为固定,而不必在 Qt Desigenr 属性列表中更改它每次我添加一个这些自定义 wdigets 时,例如在我的 CustomWidget 类构造函数中:
this->setFrameShape(QFrame::NoFrame);
问题是这些属性是在生成的 ui.h 文件中的构造函数调用之后应用的,该文件是从设计器的属性列表生成的,例如对于实现QFrame 的默认自定义小部件:
frame = new CustomWidget(groupBox_17);
frame->setObjectName(QStringLiteral("frame"));
frame->setGeometry(QRect(40, 170, 101, 21));
frame->setFrameShape(QFrame::StyledPanel);
frame->setFrameShadow(QFrame::Raised);
在这里,我们可以看到生成文件中调用的setFrameShape 将覆盖自定义小部件构造函数中的setFrameShape,因为它是在之后调用的。
所以我会看到的唯一选择是在 ui 设置之后调用一个方法(调用生成的 ui.h 文件,因此调用 setter)来更改这些属性,如下所示:
ui->setupUi(this);
setComponentsProperties(); //Do my property changes here
防止CustomWidget 中的FrameShape 属性被Qt Designer 中设置的QFrame 默认属性覆盖的任何想法,因为我不想在每个小部件上手动设置此属性推广?
【问题讨论】:
-
请说明您的问题是什么。您已经展示了现在发生的情况,请展示您希望按照自己的方式生成的代码。还请描述您希望 Qt Designer 以不同方式做什么。
标签: c++ qt qt-designer