Qt 自定义类的信号和插槽

Qt 自定义类的信号和插槽,qt,signals-slots,qslider,Qt,Signals Slots,Qslider,我已经编写了一个自定义类来重写QSlider的seek方法。基本上,这个类允许在用户单击的滑块上进行搜索 tbslider.h #ifndef TBSLIDER_H #define TBSLIDER_H #include <QSlider> #include <QObject> class Tbslider: public QSlider { Q_OBJECT public: explicit Tbslider(QWidget *parent=0);

我已经编写了一个自定义类来重写QSlider的seek方法。基本上,这个类允许在用户单击的滑块上进行搜索

tbslider.h

#ifndef TBSLIDER_H
#define TBSLIDER_H

#include <QSlider>
#include <QObject>

class Tbslider:  public QSlider
{
    Q_OBJECT
public:
    explicit Tbslider(QWidget *parent=0);

signals:
    void tbJump(int);
protected:
    void mousePressEvent(QMouseEvent *event);
private:
    QSlider *qslider;
};
#endif // TBSLIDER_H

上面的代码应该是有效的。还有什么我需要做的吗?

函数应该是

void Tbslider::mousePressEvent(QMouseEvent *event)
{


    std::cout<<"\nX co-ordinate"<<event->x();
    std::cout<<"\nY co-ordinate"<<event->y();
    int value =(minimum() + ((maximum()-minimum()) * event->x()) / width() ) ;
    setValue(value);
    emit tbJump(value); 
    QSlider::mousePressEvent(event);
}
void Tbslider::mousePressEvent(QMouseEvent*event)
{

std::要使您的组件尽可能与
QSlider
兼容,请使用它的信号-您无需创建信号,请使用
valueChanged(int-value)
。该信号已由
setValue(int)
发出。我发出信号以调用另一个类的公共插槽。
  QApplication app(argc, argv);
  MainWindow player;
  Tbslider tbslider;
  GSTEngine listen
  app.connect(&tbslider, SIGNAL(tbJump(int)), &listen, SLOT(jump(int)));
void Tbslider::mousePressEvent(QMouseEvent *event)
{


    std::cout<<"\nX co-ordinate"<<event->x();
    std::cout<<"\nY co-ordinate"<<event->y();
    int value =(minimum() + ((maximum()-minimum()) * event->x()) / width() ) ;
    setValue(value);
    emit tbJump(value); 
    QSlider::mousePressEvent(event);
}