2011-10-29 2 views
2

슬롯 Reset()이 작동하지 않는 이유는 무엇입니까? 사이 더 값을 0으로 재설정하려면 버튼을 "재설정"합니다.Qt 맞춤 슬롯

class MySlider : public QSlider 
{ 
    public: 
    MySlider(Qt::Orientation orientation, QWidget *parent = 0) : QSlider(orientation parent){} 

    public slots: 
    void Reset() 
    { 
    this->setValue(0); 
    } 
}; 

//it doesnt work when i try this 

MySlider * Slider = new MySlider(Qt::Horizontal, this); 

QPushButton *Reset = new QPushButton(tr("Reset"), this); 

connect(Reset, SIGNAL(clicked()), Slider, SLOT(Reset())); 
+1

무엇이 연결을 반환합니까? 슬롯이 올바르게 설정 되었다면 true를 반환해야합니다. –

+0

@MartinBeckett가 false를 반환합니다. –

답변

6

Q_OBJECT을 클래스의 개인 섹션에 추가하십시오. 그러면 moc에서 신호 및 슬롯이 작동하는 데 필요한 메타 데이터가 생성됩니다. http://doc.qt.io/archives/qt-4.7/qobject.html#Q_OBJECT

+0

QSGider를 사용해야했기 때문에 QSlider 서브 클래스가 필요했습니다. –

+2

와우, 이전에 Q_GADGET을 발견하지 못했습니다. QSlider는 QObject이므로 QSlider의 하위 클래스이므로 Q_OBJECT를 사용하십시오. –

+0

@ArnoldSpence 클래스의 개인 섹션에서 QObject를 시도했을 때이 오류가 발생했습니다 : 'vtable for MySlider'에 대한 정의되지 않은 참조. –

관련 문제