滑动条QSlider和进度条QProgressBar

1. 滑动条:QSlider

实例化

 //实例化1
//    QSlider* slider = new QSlider(this);

    QSlider* slider = new QSlider(Qt::Horizontal,this);//第一个参数使摆放方式

2.1滑动条的基本函数

滑动条刻度的 位置 参数

QSlider::NoTicks   //不要画任何标记
QSlider::TicksBothSides   //在槽的两边画刻度
QSlider::TicksAbove    //在(水平)滑块上方画刻度
QSlider::TicksBelow  //在(水平)滑块下方绘制刻度标记
QSlider::TicksLeft   //在(垂直)滑块的左侧绘制刻度
QSlider::TicksRight //在(垂直)滑块的右侧绘制刻度

QSlider

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

//滑动条的使用
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);

    //设置刻度值
    this->slider->setTickInterval(10);

    //设置滑动条刻度的位置
    this->slider->setTickPosition(QSlider::TicksBelow);//下面有刻度

    //获取刻度值
    this->slider->tickInterval();

    //获取滑动条的位置
    this->slider->tickPosition();

    //设置滑动条的当前值
    this->slider->setValue(5);

    //设置滑动条的范围
    this->slider->setRange(0,10);
}

Dialog::~Dialog()
{
    delete ui;
}

2.2 信号

void actionTriggered(int action)//在滑块滑动时被触发时发出
 void rangeChanged(int min, int max)//当滑动条范围发生变化时,发出此信号
 void sliderMoved(int value)//滑动条移动时触发信号
 void sliderPressed()//按住滑动条滑轮时触发
 void sliderReleased()//当用户用鼠标释放滑块时(即松开时触发)
 void valueChanged(int value)//当滑动条值改变时,这个信号被发出

2.2.1 举例

QSlider

绑定

dialog.cpp

//绑定滑动条移动的信号
    connect(this->slider,SIGNAL(sliderMoved(int)),this,SLOT(value_Changed(int)));

定义

dialog.h

public slots://滑动条移动
    void value_Changed(int value);

实现

dialog.cpp

void Dialog::value_Changed(int value){
    qDebug()<<"音量值:"<<value<<endl;
}

2. 进度条:QProgressBar

实例化

//实例化
    QProgressBar* progressBar = new QProgressBar(this);

2.1 代码实现

2.1.1 进度条的基本函数

QProgressBar

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

//进度条的使用
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);

    //复位
    this->progressBar->reset();

    //设置最大值
    this->progressBar->setMaximum(100);

    //设置最小值
    this->progressBar->setMinimum(0);

    //设置当前值
    this->progressBar->setValue(50);//意思是加载时,就从50%开始加载

    //设置进度条的范围
    this->progressBar->setRange(0,100);

    //设置进度条的摆放形式
    this->progressBar->setOrientation(Qt::Horizontal);//水平

    //设置进度条的加载方向
    this->progressBar->setInvertedAppearance(true);//反向加载



}

Dialog::~Dialog()
{
    delete ui;
}


2.2 信号

当进度条中显示的值发生变化时,就会发出这个信号。

2.3 练习:实现滑动条控制进度条

QSlider_QProgressBar

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QSlider>
#include <QProgressBar>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
    
public slots://槽
    void rece_value(int value);
    
private:
    Ui::Dialog *ui;

    //实例化滑动条和进度条
    QSlider* slider = new QSlider(Qt::Horizontal,this);

    QProgressBar* progressBar = new QProgressBar(this);

};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

//实现滑动条控制进度条
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);

    //移动滑动条的位置
    this->slider->move(100,100);

    //移动进度条的位置
    this->progressBar->move(100,300);

    //绑定滑动条滑动触发信号
    connect(this->slider,SIGNAL(sliderMoved(int)),this,SLOT(rece_value(int)));

}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::rece_value(int value){
    qDebug()<<value<<endl;
    //设置进度条的值
    this->progressBar->setValue(value);
}

3. 实现食堂满意度调查表

要求:

(1)设置3个选项,选项题目自由返回

(2)每个选项下分4个选择, 最好的选择分数为10分

(3)用户可以自行填写满意度调查表

(4)实现对满意度分值的计算,并给出相关建议(根据不同的分段,建议不同)

(5)用户必须将每个选项填写完成,如果没有填写完,则给予用户提示

例如:

你对食堂早餐满意度

很好:10       一般:6               不好:4              很差:0

Diao_shitang

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

public slots:
    void rece_peoblem1(const QString& text);
    void rece_peoblem2(const QString& text);
    void rece_peoblem3(const QString& text);


private slots:
    void on_pushButton_clicked();

private:
    Ui::Dialog *ui;

    int sum = 0;//记录总分
    int count = 0;//保证用户做完每个题的标志位
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

/*
实现食堂满意度调查表
    要求:
        (1)设置3个选项,选项题目自由返回
        (2)每个选项下分4个选择, 最好的选择分数为10分
        (3)用户可以自行填写满意度调查表
        (4)实现对满意度分值的计算,并给出相关建议(根据不同的分段,建议不同)
        (5)用户必须将每个选项填写完成,如果没有填写完,则给予用户提示
例如:
    你对食堂早餐满意度
        很好:10       一般:6               不好:4              很差:0

*/

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

    //绑定问题1 2 3 中的列表项被选中的信号
    connect(ui->problem1,SIGNAL(activated(QString)),this,SLOT(rece_peoblem1(QString)));
    connect(ui->problem2,SIGNAL(activated(QString)),this,SLOT(rece_peoblem2(QString)));
    connect(ui->problem3,SIGNAL(activated(QString)),this,SLOT(rece_peoblem3(QString)));
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::rece_peoblem1(const QString &text){

    QStringList list = text.split(" ");//以空格分割获取的内容
    QString xuanxiang = list[0];//取出选项

    if(xuanxiang=="A"){
        sum+=10;
    }else if(xuanxiang=="B"){
        sum+=6;
    }else if(xuanxiang=="C"){
        sum+=4;
    }else if(xuanxiang=="D"){
        sum+=0;
    }

    count++;

}

void Dialog::rece_peoblem2(const QString &text){


    QStringList list = text.split(" ");//以空格分割获取的内容
    QString xuanxiang = list[0];//取出选项

    if(xuanxiang=="A"){
        sum+=10;
    }else if(xuanxiang=="B"){
        sum+=6;
    }else if(xuanxiang=="C"){
        sum+=4;
    }else if(xuanxiang=="D"){
        sum+=0;
    }

    count++;
}

void Dialog::rece_peoblem3(const QString &text){
    QStringList list = text.split(" ");//以空格分割获取的内容
    QString xuanxiang = list[0];//取出选项

    if(xuanxiang=="A"){
        sum+=10;
    }else if(xuanxiang=="B"){
        sum+=6;
    }else if(xuanxiang=="C"){
        sum+=4;
    }else if(xuanxiang=="D"){
        sum+=0;
    }

    count++;
}


//提交
void Dialog::on_pushButton_clicked()
{
    qDebug()<<sum<<endl;

    if(count==3){

        if(sum<=10){
            qDebug()<<"非常抱歉,我们侯期一定注意整改"<<endl;
            ui->jianyi->setText("非常抱歉,我们侯期一定注意整改");
            count=0;
            sum=0;
        }else if(sum>10 && sum<=20){
            qDebug()<<"谢谢你的配合,关于你反应的问题,我会高度重视"<<endl;
            ui->jianyi->setText("谢谢你的配合,关于你反应的问题,我会高度重视");
            count=0;
            sum=0;
        }else if(sum>20 && sum<=30){
            qDebug()<<"谢谢你对我们的肯定,对于不足我们正在改进,谢谢"<<endl;
            ui->jianyi->setText("谢谢你对我们的肯定,对于不足我们正在改进,谢谢");
            count=0;
            sum=0;
        }

    }else{
        qDebug()<<"请做完所有题目!"<<endl;
        ui->jianyi->setText("请做完所有题目!");

    }
}


  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值