2013-06-04 98 views
1

我想创建我的CustomQSpinBox。Qt继承QSpinBox和QPushButton

这CustomQSpinBox必须继承QPushButton和QSpinBox 的,但是当我编译此代码:

#include <QSpinBox> 
#include <QPushButton> 

class CustomQSpinBox : public QSpinBox, public QPushButton 
{ 
    Q_OBJECT 

public: 
    CustomQSpinBox (QWidget *parent = 0); 
    ~CustomQSpinBox(); 
    void initMinMax(int min, int max); 
    void init(); 

signals: 
    void needNumpad(); 

public slots: 
    void clicked(); 

}; 

我得到一个错误:

ERREUR:C2594:“static_cast'ÿ:转换ambigu‰ 'QObject *'en 'CustomQSpinBox *'

我该如何做我的继承?

+0

到底为什么你从两个类(无论是从QObject的起源给你你的错误......“钻石问题”继承HTTP://en.wikipedia .org/wiki/Multiple_inheritance)?你只需要从QSpinBox本身派生(或者更准确地说,如果需要,从QSpinBox继承一个CustomSpinBox类和从QPushButton派生一个CustomPushButton) – Najzero

+0

我需要知道用户何时单击QSpinBox。 QSpinBox具有ButtonSymbols = noButton – artoon

+0

然后您可以完全依赖标准QObject并使用qt的信号/插槽系统(将valueChanged()信号设置为您希望的插槽)请参阅http://qt-project.org /doc/qt-4.8/qspinbox.html这里和信号/插槽说明在这里:http://qt-project.org/doc/qt-4.8/signalsandslots.html – Najzero

回答

0

是的,当numPad关闭时,该值在QSpinBox中设置。问题是,当我点击QSpinBox时打开numPad。

对于我这个代码管理的时刻:

#include <QSpinBox> 
#include <QPushButton> 
#include <QMoveEvent> 
#include <QResizeEvent> 

class CustomQSpinBox: public QSpinBox 
{ 
    Q_OBJECT 

public: 
    CustomQSpinBox(QWidget *parent = 0); 
    ~CustomQSpinBox(); 

    void resizeEvent(QResizeEvent *event); 
    void moveEvent(QMoveEvent * event); 

signals: 
    void needNumpad(); 

public slots: 
    void clicked(); 

private: 
    QPushButton * button; 

};