有没有办法阻止Qt Designer应用属性?

时间:2016-08-17 09:46:03

标签: c++ qt qt-designer

我有一些我从QWidgetQFrame推广的自定义窗口小部件,但我希望构造函数能够设置要修复的属性列表,而不必在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

任何想法都要阻止FrameShape CustomWidget属性被Qt Designer中设置的QFrame的默认属性覆盖,因为我不想通过以下方式设置此属性把我推广的每一个小部件都拿出来?

1 个答案:

答案 0 :(得分:0)

如果属性是真正的默认值,则不会覆盖这些属性。您的.ui文件不正确,并明确覆盖这些属性。您应该将它们重置为默认值,然后不会发出您引用的代码。 setComponentProperties调用是多余的,设置属性的代码属于自定义窗口小部件的构造函数。