Qt自帶的滑動條QSlider和Android中自帶的滑動條控件相比實在是具有天壤之別,此處使用eventFilter事件過濾器來完成一個鼠標點擊滑動條滑塊定位的細節功能。
代碼段:
bool Device::eventFilter(QObject *obj, QEvent *event) //slider滑塊根據鼠標位置
{
if(obj==pSlider_l)
{
if (event->type()==QEvent::MouseButtonPress) //判斷類型
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if (mouseEvent->button() == Qt::LeftButton) //判斷左鍵
{
int dur = pSlider_l->maximum() - pSlider_l->minimum();
int pos = pSlider_l->minimum() + dur * ((double)mouseEvent->x() / pSlider_l->width());
if(pos < (pSlider_l->sliderPosition())||pos > (pSlider_l->sliderPosition()))
{
pSlider_l->setValue(pos);
}
}
}
}
return QObject::eventFilter(obj,event);
}