什么是从Qt Designer创建的表单继承的最佳方式?
没有很好的直接继承自身的方法,最好是继承为表单创建的类。
class testBase : public QWidget
{
Q_OBJECT
public:
testBase (QWidget *parent = 0);
~testBase ();
protected: // here was private
Ui::testBaseClass baseUi; // rename this
};
testBase ::testBase (QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
ui.setupUi(this)
应更改为ui.setupUi(baseUi.placeholder)
。class testDerived : public testBase
{
Q_OBJECT
public:
testDerived (QWidget *parent = 0);
~testDerived ();
private:
Ui::testDerivedClass ui;
};
testDerived::testDerived(QWidget *parent)
: testBase (parent)
{
ui.setupUi(baseUi.placeholder);
}
还要注意,派生类不会改变基类表单,而是扩展它。您将无法在表单构造函数中添加或删除基本表单项,但您指定为占位符的容器将填充派生类的表单数据。
class derived: public QWidget, private Ui::SomeForm, private Ui::SomeForm2
。这样的多重继承会让人头疼。 - Raivclass derived: public QWidget, private Ui::SomeForm
,没有 Form2
。请注意,Form2
本身不是一个小部件,所以我认为这并不会带来什么麻烦。只有在表单和派生类中声明相同的符号时才会出现问题,当然这不是好的做法。但头痛真的不是继承固有的问题。 - Sebastian Mach
private
类继承。 - Serge Dundich