在Qt Creator中创建相同GUI对象的多个实例

时间:2012-07-12 16:30:27

标签: c++ qt user-interface qt-creator qt-designer

我在Qt中构建一个GUI,需要复制多个部分,而不是物理地复制和粘贴每个部分,我更喜欢使用对象/子类的方法,这样我只需要设计它曾经并制作了多个实例。它会简化开发过程,因为我只需要进行一次更改。

最好的办法是什么?

2 个答案:

答案 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开始,那么从设计器开始,可以将窗口小部件添加到其他窗口小部件或窗体。这可以通过将小部件导回到设计器中来实现,但我从来没有这样做。我通常有一个与我用于设计模式的大小相同的占位符,然后在填充表单时使用我的自定义表格将其换出。