0
我寫了一個自定義類來覆蓋QSlider的查找方法。基本上這個類允許在用戶點擊的地方找到滑塊。在main.cpp中定製類的信號和插槽
QApplication app(argc, argv);
MainWindow player;
Tbslider tbslider;
GSTEngine listen
app.connect(&tbslider, SIGNAL(tbJump(int)), &listen, SLOT(jump(int)));
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
tbslider.cpp
#include <iostream>
#include <QEvent>
#include <QPoint>
#include <QMouseEvent>
#include "tbslider.h"
Tbslider::Tbslider(QWidget *parent):QSlider(parent)
{
}
void Tbslider::mousePressEvent(QMouseEvent *event)
{
QSlider::mousePressEvent(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'兼容,請使用它的信號 - 不需要您創建信號,請使用'valueChanged(int value)'。這已經由'setValue(int)'發出了。 – cmannett85
它不起作用? – cmannett85
我發射信號來呼叫另一個類的公共插槽。 –