C++ Qt自定义插槽
插槽重置()为什么不起作用?我想用“重置”按钮将sider的值重置为零C++ Qt自定义插槽,c++,qt,slider,signals-slots,qt-signals,C++,Qt,Slider,Signals Slots,Qt Signals,插槽重置()为什么不起作用?我想用“重置”按钮将sider的值重置为零 class MySlider : public QSlider { public: MySlider(Qt::Orientation orientation, QWidget *parent = 0) : QSlider(orientation parent){} public slots: void Reset() { this->setValue(0); } }; /
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()) );
尝试将
Q_对象
添加到类的私有部分。这将导致moc
创建信号和插槽工作所需的元数据。请参见连接返回什么?如果插槽设置正确,它应该返回true我尝试了Q_GADGET(因为我需要它是一个QSlider子类),但它不起作用哇,我以前从未遇到过Q_GADGET,实际上,我必须去查一下:)QSlider是一个QObject,QSlider的子类也是,所以请使用Q_OBJECT。@ArnoldSpence当我在类的私有部分尝试QObject时,我得到了以下错误:未定义对“vtable for MySlider”的引用。解决这个问题error@Geore:QSlider
是QObject
的后代,因此Q\u OBJECT
是正确的选择,而不是Q\u GADGET