简而言之,我想要一个新类,它扩展了我自己制作的自定义小部件,因此可以完全访问它的UI。
到目前为止,我已经尝试了几种不同的方法,这些方法基于人们通常如何对类进行子类化/扩展,但是由于种种原因,我有点失败。
此外,在我的新课程中简单地使用我的小部件作为成员不会为这种情况做。
有人可以举例说明我将如何做到这一点吗?我已经做了很多搜索,但我似乎无法找到任何与我正在尝试做的事情有关的点击 如果所有其他方法都失败了,我只需复制代码并制作一个实际的新小部件,这在技术上可以为我节省很多时间,但它确实没有那么做。
我的第一直觉是做这样的事情(Qwe
是我的新班级,Asd
是小工具:
class Qwe : Asd {public: ...}
我甚至公开了小部件的Ui,但后来我得到了错误:
使用undefine类型Ui :: Asd
每当我尝试访问Ui的元素时。
答案 0 :(得分:2)
假设我们有一个名为BaseWidget
的自定义窗口小部件和一个名为ChildWidget
的子窗口小部件。通常声明BaseWidget
,但要使其ui
成员受保护而不是私有,如下所示:
protected:
Ui::BaseWidget *ui;
将ChildWidget
声明为源自BaseWidget
的普通窗口小部件。确保在ui_BaseWidget.h
文件中包含ChildWidget.cpp
,就像在BaseWidget.cpp
中一样(这包括并且标题本身由Qt生成)。
部首:
#include "BaseWidget.h"
class ChildWidget : public BaseWidget {
Q_OBJECT
public:
explicit ChildWidget(QString text, QWidget *parent = 0);
};
来源:
#include "ChildWidget.h"
#include "ui_BaseWidget.h"
ChildWidget::ChildWidget(QString text, QWidget *parent) :
BaseWidget(parent)
{
ui->label->setText(text);
}