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的主要内容,如果未能解决你的问题,请参考以下文章

从自定义小部件继承

自定义QT QWidget对象响应弹出菜单的解决方法

自定义QT QWidget对象响应弹出菜单的解决方法

自定义QT QWidget对象响应弹出菜单的解决方法

自定义QT QWidget对象响应弹出菜单的解决方法

为自定义 QWidget 设置背景颜色