2015-06-17 96 views
0

我已經實現了用戶正在繪製一個框架的界面,然後移動到下一個框架,這將增加滑塊值1.用戶還可以增加或減少滑塊值。但是,如果用戶只繪製了第20幀,那麼用戶不應該能夠將滑塊拖到20以上。我怎樣才能確保?有沒有辦法阻止Qt滑塊超過一個值?

+0

不是e我正確理解問題,但[setMaximum(int)'](http://doc.qt.io/qt-5/qabstractslider.html#maximum-prop)有什麼問題? – Bowdzone

回答

2

使用這個類和剛剛成立setRestrictValue()是最小值用戶可以拖動滑塊

slider.h

#ifndef SLIDER_H 
#define SLIDER_H 

#include <QSlider> 


class Slider : public QSlider 
{ 
    Q_OBJECT 
public: 
    Slider(QWidget * parent = 0); 
    ~Slider(); 

    void setRestrictValue(int value); 

private slots: 
    void restrictMove(int index); 

private: 
    int m_restrictValue; 
}; 

#endif // SLIDER_H 

slider.cpp

#include "slider.h" 

Slider::Slider(QWidget *parent) : QSlider(parent) 
{ 
    connect(this,SIGNAL(valueChanged(int)),this,SLOT(restrictMove(int))); 

    m_restrictValue = 0; 
} 

Slider::~Slider() 
{ 

} 

void Slider::setRestrictValue(int value) 
{ 
    m_restrictValue = value; 
} 


void Slider::restrictMove(int index) 
{ 
    if(index < m_restrictValue) 
    { 
     this->setSliderPosition(m_restrictValue); 
    } 
} 

例如:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    ui->slider1->setRange(0,100); //slider range 
    ui->slider1->setValue(50); //slider current value 
    ui->slider1->setRestrictValue(22); //the minimum value that user can drag the slider 

    ui->slider2->setRange(0,100);//slider range 
    ui->slider2->setValue(50); //slider current value 
    ui->slider2->setRestrictValue(11);//the minimum value that user can drag the slider 
} 
相關問題