2011-10-29 6 views
2

なぜスロットReset()が機能しないのですか?私はボタンを "リセット"して、サイダーの値をゼロにリセットします。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

Q_GADGETを試しましたが(QSliderサブクラスでなければならないため)、動作しませんでした –

+2

前にQ_GADGETに遭遇していませんでした。 QSliderはQObjectであり、QSliderのサブクラスも同様ですので、Q_OBJECTを使用してください。 –

+0

@ArnoldSpenceクラスのプライベートセクションでQObjectを試してみましたが、このエラーが発生しました: 'vtable for MySlider'への未定義参照。 –

関連する問題