QWidget 继承自自定义 QWidget
Posted
技术标签:
【中文标题】QWidget 继承自自定义 QWidget【英文标题】:QWidget inherit from custom QWidget 【发布时间】:2014-07-24 07:21:44 【问题描述】:在Qt C++中,是否可以创建一个自定义QWidget
,然后为项目的所有QWidget
(继承自自定义QWidget
)重用这个自定义QWidget
?
【问题讨论】:
你能举个例子说明你想做什么吗? 【参考方案1】:也许我误解了这个问题,但您可以创建您的自定义QWidget
,然后在任何地方使用它。
class derivedQWidget : public QWidget
Q_OBJECT
derivedQWidget();
virtual ~derivedQWidget();
class myWidget : public derivedQWidget
...
class myWidget2 : public derivedQWidget
...
如果问题是:我们可以重新实现QWidget
吗?不,你不能。
【讨论】:
【参考方案2】:我已经在这个模式下解决了:
第一类,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)
在这种模式下,我从第一个类继承所有,我可以独立自定义其他类。
【讨论】:
以上是关于QWidget 继承自自定义 QWidget的主要内容,如果未能解决你的问题,请参考以下文章