在Qt C ++中,是否可以创建自定义QWidget
,然后对所有QWidget
(继承自QWidget
)的所有QWidget
重用此自定义{{1}}该项目?
答案 0 :(得分:1)
也许我误解了这个问题,但您可以创建自定义QWidget
,然后在任何地方使用它。
class derivedQWidget : public QWidget
{
Q_OBJECT
derivedQWidget();
virtual ~derivedQWidget();
}
class myWidget : public derivedQWidget
{
...
}
class myWidget2 : public derivedQWidget
{
...
}
如果问题是:我们可以重新实现QWidget
吗?不,你不能。
答案 1 :(得分:0)
我已经在这种模式下解决了:
第一堂课, Widget.h :
#ifndef WIDGET_H
#define WIDGET_H
#include <QPushButton>
#include <QMouseEvent>
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
virtual ~Widget();
QPushButton *getBtn() const;
void setBtn(QPushButton *value);
protected:
void mousePressEvent(QMouseEvent *evt);
void mouseMoveEvent(QMouseEvent *evt);
private:
Ui::Widget *ui;
QPushButton *btn;
QPoint oldPos;
};
和第二个类 widExt.h ,继承自Widget:
#ifndef WIDEXT_H
#define WIDEXT_H
#include "widget.h"
namespace Ui {
class widExt;
}
class widExt : public Widget
{
public:
widExt();
private slots:
void on_dial_2_actionTriggered(int action);
private:
Ui::widExt *ui;
};
#endif // WIDEXT_H
与相对 widExt.cpp :
#include "widext.h"
#include "ui_widext.h"
widExt::widExt() : ui(new Ui::widExt)
{
ui->setupUi(this);
}
void widExt::on_dial_2_actionTriggered(int action)
{
}
在这种模式下,我继承了第一个类的所有内容,我可以独立定制其他类。