2013-06-04 11 views
1

CustomQSpinBox를 만들고 싶습니다.Qt가 QSpinBox 및 QPushButton을 상속합니다.

이 CustomQSpinBox은 QPushButton을하고 QSpinBox 의 상속해야하지만이 코드를 컴파일 할 때 :

erreur :

#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(); 

}; 

오류가 발생합니다 C2594를 : 'static_cast'ÿ : 변환을 ‰ ambigu 'QObject *'ko '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; 

};