Qt自定义插槽

Geo*_*Shg 2 c++ qt slider signals-slots qt-signals

为什么插槽Reset()不起作用?我希望按钮"reset"将sider的值重置为零.

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()) );
Run Code Online (Sandbox Code Playgroud)

Eva*_*ran 6

尝试添加Q_OBJECT到类的私有部分.这将导致moc创建信号和插槽工作所必需的元数据.请参见http://doc.qt.io/archives/qt-4.7/qobject.html#Q_OBJECT

  • 哇,我之前没有遇到Q_GADGET,我实际上不得不去查看:) QSlider是一个QObject,所以你的QSlider的子类也是如此,所以使用Q_OBJECT. (2认同)