我正在 Qt 中构建一个 GUI,这将需要复制多个部分,而不是物理复制和粘贴每个部分,我更喜欢使用对象/子类的方法,这样我只需要设计一次就可以了制作它的多个实例。它将简化开发过程,因为我只需要进行一次更改。
这样做的最佳方法是什么?
我正在 Qt 中构建一个 GUI,这将需要复制多个部分,而不是物理复制和粘贴每个部分,我更喜欢使用对象/子类的方法,这样我只需要设计一次就可以了制作它的多个实例。它将简化开发过程,因为我只需要进行一次更改。
这样做的最佳方法是什么?
我曾经创建了一个应用程序,它可以打开带有相当多控件的文件的选项卡。我发现 QT 相当贪婪地吃掉内存。我终于重写了它,因为当时只有一个选项卡小部件可见,我发现伪造它要好得多,只有一个并更改该小部件中的数据(控件的状态),从而产生切换小部件的错觉。
我不知道这是否有帮助。至于子类化,你可以像任何其他 c++ 类一样子类化和实例化你的 qt 类。
您能否更具体地说明什么不起作用?
我会继承 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 开始,则从设计器开始,则可以将小部件添加到其他小部件或表单中。这可以通过将小部件重新导入设计器来完成,但我从来没有让它工作。我通常有一个与我用于设计模式的大小相同的占位符,然后在填充表单时将其换成我的自定义占位符。