我在Qt中构建一个GUI,需要复制多个部分,而不是物理地复制和粘贴每个部分,我更喜欢使用对象/子类的方法,这样我只需要设计它曾经并制作了多个实例。它会简化开发过程,因为我只需要进行一次更改。
最好的办法是什么?
答案 0 :(得分:0)
我曾经创建了一个应用程序,它可以打开文件的标签,对它们进行相当多的控制。我发现QT非常贪婪地吃掉了记忆。我最后重写了它,因为当时只能看到一个标签窗口小部件,我发现伪造它更好,只有一个并且只更改该窗口小部件中的数据(控件的状态),从而产生切换窗口小部件的错觉。
我不知道这是否有帮助。至于子类化,你可以像任何其他c ++类一样子类化和实例化你的qt类。
你能否更具体地说明什么不起作用?
答案 1 :(得分:0)
我会将QWidget或QFrame子类化,并让它显示需要重复的所有控件。这样你就可以制作一些子类而不是复制和粘贴。
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget( QWidget* parent = 0)
//Member functions
private:
QLablel* label;
QTextField* text;
//More ui components
}
MyWidget::MyWidget( QWidget* parent) : QWidget(parent)
{
label = new QLabel(this);
text = new QTextField(this)
}
如果您选择以QWidget而不是QMainWindow开始,那么从设计器开始,可以将窗口小部件添加到其他窗口小部件或窗体。这可以通过将小部件导回到设计器中来实现,但我从来没有这样做。我通常有一个与我用于设计模式的大小相同的占位符,然后在填充表单时使用我的自定义表格将其换出。