QSlider 解決點擊不能到該位置問題

  • 方法一:可以繼承重寫一個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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章