帶有兩個(gè)滑塊的QSlider

帶有兩個(gè)滑塊的QSlider

項(xiàng)目中用到了一組范圍,可是Qt中自帶的QSlider只有一個(gè)滑塊,不滿足需求,需要實(shí)現(xiàn)一個(gè)帶有兩個(gè)滑塊的Slider。

2019-03-19_120604.jpg

經(jīng)過一番搜索,發(fā)現(xiàn)了一個(gè)叫做 Qt Extension Library的庫,其中包含了一個(gè)QxtSpanSlider的QSlider的重寫實(shí)現(xiàn),這個(gè)類滿足了需求。

使用方法

首先在界面上引用一個(gè)QSlider類,如下圖

2019-03-19_121840.jpg

然后在QSlider上,右鍵:

2019-03-19_122030.jpg
2019-03-19_122101.jpg

提升類的名稱填入QxtSpanSlider,頭文件自動(dòng)生成的為小寫,改為QxtSpanSlider.h

2019-03-19_122222.jpg

點(diǎn)擊添加,提升后運(yùn)行程序:

2019-03-19_122512.jpg

代碼

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->lineEdit->setText("10");
    ui->lineEdit_2->setText("200");
    ui->horizontalSlider->setHandleMovementMode(QxtSpanSlider::NoOverlapping);//設(shè)置兩個(gè)滑塊的模式
    ui->horizontalSlider->setMaximum(200);//最大值設(shè)置
    ui->horizontalSlider->setLowerValue(10);//初始化小滑塊的值
    ui->horizontalSlider->setUpperValue(200);//初始化大滑塊的值
    connect(ui->horizontalSlider,SIGNAL(lowerValueChanged(int)),this,SLOT(lowerValueChangedSlot(int)));
    connect(ui->horizontalSlider,SIGNAL(upperValueChanged(int)),this,SLOT(upperValueChangedSlot(int)));
    connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(lowerTextChangedSlot(QString)));
    connect(ui->lineEdit_2,SIGNAL(textChanged(QString)),this,SLOT(upperTextChangedSlot(QString)));
}
  • setHandleMovementMode
 enum HandleMovementMode
    {
        FreeMovement,//兩個(gè)滑塊自由移動(dòng)
        NoCrossing,  //左側(cè)滑塊不能越過右側(cè)滑塊,但是兩個(gè)滑塊可以重疊
        NoOverlapping //左側(cè)不能越過右側(cè),且不能重疊
    };
  • lowerValueChanged

滑塊的兩個(gè)值改變后會(huì)發(fā)出信號(hào)lowerValueChanged和upperValueChanged

測(cè)試程序源碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容