推广小部件是QT Designer中最好的功能之一。但是,在使用设计师时,它会在setupUi内部自动'new'对象。这限制了扩展界面文件的能力。 是否可能使用某种工厂来获取推广小部件,以便在需要子类的推广小部件时,可以通过更改工厂并返回小部件的子类来实现。 要求: NamePanel* myPanel; void setupUi(QWidget* pWidget) { myPanel = Factory::CreateNamePanel(); } 有没有解决这个问题的方法?
很遗憾,似乎无法将工厂添加到UI文件中。解决方法是在UI中添加带有附加布局的QWidget,并将生成的工厂小部件添加到该布局中。 代码将会是这样的:ui->setupUi(this); QWidget *panel = Factory::CreateNamePanel(); ui->namePanelContainer->layout()->addWidget(panel);