- 方法一:可以繼承重寫一個QSlider
- 方法二(推薦):
1.instaneventfiliter(this);
//slider安裝一個事件過濾器
2.在eventfilter(QObject *,QEvent*)
中攔截它,很簡單吧
例子:
slider=new QSlider(this);
slider->installEventFilter(this);
bool trayIconMenu::eventFilter(QObject *obj, QEvent *event)
{
if(obj==slider)
{
if (event->type()==QEvent::MouseButtonPress) //判斷類型
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if (mouseEvent->button() == Qt::LeftButton) //判斷左鍵
{
int dur = slider->maximum() - slider->minimum();
int pos = slider->minimum() + dur * ((double)mouseEvent->x() / slider->width());
if(pos != slider->sliderPosition())
{
slider->setValue(pos);
}
}
}
}
return QObject::eventFilter(obj,event);
}
okay!即可以實現slider點哪裏就到哪裏
http://blog.csdn.net/what951006/article/details/51507801