QWidget继承自定义QWidget

时间:2014-07-24 07:21:44

标签: c++ qt qt5 qwidget

在Qt C ++中,是否可以创建自定义QWidget,然后对所有QWidget(继承自QWidget)的所有QWidget重用此自定义{{1}}该项目?

2 个答案:

答案 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)
{

}

在这种模式下,我继承了第一个类的所有内容,我可以独立定制其他类。