当前位置: 首页 > news >正文

【QT】Qt常用数值输入和显示控件

目录

1.QAbstractslider

1.1主要属性

2.QSlider

2.1专有属性

2.2 常用函数

3.QScrollBar

4.QProgressBar

5.QDial

6.QLCDNumber

7.上述控件应用示例

1.QAbstractslider

1.1主要属性

QSlider、QScrollBar和Qdial3个组件都从QAbstractSlider继承而来,有一些共有的属性。 QSlider是滑动的标尺型组件,滑动标尺上的一个滑块可以改变值。
基类QAbstractslider的主要属性包括以下几种。
  • minimum、maximum:设置输入范围的最小值和最大值,例如,用红、绿、蓝配色时,每种基色的大小范围是0、255,所以设置minimum为0,maximum为255。
  • singleStep:单步长,拖动标尺上的滑块,或按下左/右光标键时的最小变化数值。
  • pageStep:在Slider上输入焦点,按pgUp或pgDn键时变化的数值(即鼠标放在标尺上,点击一次,滑块最小变化数值)。
  • value:组件的当前值,拖动滑块时自动改变此值,并限定在minimum和maximum定义的范围之内。
  • sliderPosition:滑块的位置,若tracking属性设置为true,sliderPosition就等于value。
  • tracking:sliderPosition是否等同于value,如果tracking=true,改变value时也同时改变sliderPosition。
tracking属性 默认设置为true ,当打开的时候,发现滑块在拖动滑块时发出valueChanged()信        号。当关闭之后就会发现滑块仅在用户释放滑块时才发出valueChanged()信号。有时候在视频         播放的时候,会在进度测试时需要使用此功能。
  • orientation:Slider的方向,可以设置为水平或垂直。方向参数是Qt的枚举类型enum Qt::Orientation,取值包括以下两种。 Qt::Horizontal水平方向; Qt::Vertical垂直方向。
  • invertedAppearance:显示方式是否反向,invertedAppearance=false时,水平的Slider由左向右数值增大,否则反过来。
  • invertedControls:反向按键控制,若invertedControls=true,则按下PgUp或PgDn按键时调整数值的反向相反。
是否反转其滚轮和按键事件。
如果为 false,则向上滚动鼠标滚轮或使用向上翻页等键会将值增加到最大值。
如果为 true,则向上滚动鼠标滚轮或使用向上翻页等键会将值减小到最小值。
1.2 成员函数
【信号】void actionTriggered(int action)
当滑块动作动作被触发时会发出这个信号。动作包括:
  • SliderNoAction
  • SliderSingleStepAdd
  • SliderSingleStepSub
  • SliderPageStepAdd
  • SliderPageStepSub
  • SliderToMinimum
  • SliderToMaximum
  • SliderMove
当信号发出时,sliderPosition 已经根据动作进行了调整,但是 value 还没有被传播(意味着 valueChanged() 信号还没有发出),视觉显示还没有更新。因此,在连接到此信号的槽中,可以根据动作和滑块的值自己调用 setSliderPosition() 来安全地调整任何动作。
void triggerAction(QAbstractSlider::SliderAction action)
触发滑块动作。
【信号】void rangeChanged(int min, int max)
当滑块范围发生变化时会发出此信号,min 是新的最小值,max 是新的最大值。
void setRange(int min, int max)
将滑块的最小值设置为 min,将其最大值设置为 max。
void QAbstractSlider::setRange(int min,int max)
{
    Q_D(QAbstractSliimder)
    int oldMin = d->minimum;
    int oldMax = d->maximum;
    d->minimum = min;
    d->maximum = qMax(min,max);
    if(oldMin!=d->minimum || oldMax != d->maximum)
    {
        sliderChange(SliderRangeChange);
        emit rangeChanged(d->minmum,d->maximum);
                setValue(d->value);
    }
}
【信号】void sliderMoved(int value)
当 sliderDown 为true并且滑块移动时发出此信号。这通常发生在用户拖动滑块时。value 是新的滑块位置。即使 tracking 为 false 也会发出此信号。
【信号】void sliderPressed()
此信号在用户使用鼠标按下滑块时、在调用 setSliderDown(true) 时发出。
【信号】void sliderReleased()
当用户使用鼠标释放滑块时、在调用 setSliderDown(false) 时发出此信号。
【信号】void valueChanged(int value)
当 value 发生变化时会发出此信号,并将新滑块值作为参数。
void setRepeatAction(QAbstractSlider::SliderAction action,int thresholdTime = 500,int repeatTime = 50)
在 thresholdTime 的初始延迟之后,将 action 操作设置为以 repeatTime 的间隔重复触发。
QAbstractSlider::SliderAction repeatAction()
返回当前的重复动作。
void sliderChange(QAbstractSlider::SliderChange change)
重新实现此虚函数以跟踪滑块更改。
  • SliderRangeChange
  • SliderOrientationChange
  • SliderStepsChange
  • SliderValueChange

2.QSlider

2.1专有属性

属于QSlider的专有属性有两个,如下:
  • tickPosition:标尺刻度的显示位置,使用枚举类型QSlider.:TickPosition,取值包括以下6种。
QSlider::NoTicks  不显示刻度
QSIider::TicksBothSides  标尺两侧都显示刻度
QSlide::TicksAbove  标尺上方显示刻度
QSlider::TicksBelow  标尺下方显示刻度
QSlide::TicksLeft  标尺左侧显示刻度
QSlider::TicksRight  标尺右侧显示刻度
  • ticklnterval:
标尺刻度的间隔值,这是一个值间隔,而不是像素间隔。若设置为0,会在singlestep和pagestep之间自动选择。默认值为0。

2.2 常用函数

  • void initStyleOption(QStyleOptionSlider *option)
使用此 QSlider 中的值初始化选项。 当子类需要一个 QStyleOptionSlider 但又不想自己填写所有信息时,此方法很有用。
  • setTickInterval(ti):此属性保存刻度线之间的间隔。这是一个值间隔,而不是像素间隔。如果为0,则滑块将在singleStep和pageStep之间进行选择。默认值为0。
  • setTickPosition(position):此属性保存此滑块的刻度线位置。有效值由TickPosition枚举描述。默认值为NoTicks。

3.QScrollBar

QScrollBar:卷滚条,与QSlider功能类似,还可以用于卷滚区域。
QScrollBar从QAbstractSlider继承而来的,具有QAbstractSlider的基本属性,没有专有属性。

4.QProgressBar

QProgressBar:进度条,其父类是QWidget,一般用于显示任务进度,可用于数值的百分比显示。常用属性如下。
  • minimum、maximum:最小值和最大值。
  • value:当前值,可以设定或读取当前值。
  • textVisibIe:是否显示文字,文字一般是百分比表示的进度。
  • orientation:可以设置为水平或垂直方向。
  • format:显示文字的格式,“%p%"显示百分比,"%v”显示当前值,"%m”显示总步数。
  • 缺省为"%p%"。

5.QDial

QDial:表盘式数值输入组件,通过转动表针获得输入值。QDial的特有的属性包括以下两种。
  • notchesVisible:表盘的小刻度是否可见。
  • notchTarget:表盘刻度间的间隔像素值。

6.QLCDNumber

QLCDNumber:模仿LCD数字的显示组件,可以显示整数或浮点数,显示整数时可以不
同进制显示。但就如实际的LCD一样, 要设定显示数字的个数。显示整数时,还可以选择以不同进制来显示,如十进制、二进制、十六 进制。其主要属性如下。
  • digitcount:显示的数的位数,如果是小数,小数点也算一个数位。
  • smallDecimalPoint:是否有小数点,如果有小数点,就可以显示小数。
  • mode:数的显示进制,通过调用函数setDecMode()、setBinMode()、setOctMode()、
  • setHexMode()可以设置为常用的十进制、二进制、八进制、十六进制格式。
  • value:返回显示值,浮点数。若设置为显示整数,会自动四舍五入后得到整数,设置为
  • intvalue的值。如果smallDecimalPoint=true,设置value时可以显示小数,但是数的位数
  • 不能超过digitCount。
  • intvalue:返回显示的整数值。
例如,若smallDecimaIPoint=true,digitCount=3,设置value=2.36,则界面上LCDNumber组
件会显示为2,4;若设置value=1456.25,则界面上LCDNumber组件只会显示145。所以,用
QLCDNumber作为显示组件时,应注意这些属性的配合。

7.上述控件应用示例

(1)main.cpp文件
#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

(2)widget.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_SliderV_valueChanged(int value);void on_dial_valueChanged(int value);void on_radioBtnDec_clicked(); //设置LCD显示十进制void on_radioBtnBin_clicked();//设置LCD显示二进制void on_radioBtnOct_clicked();//设置LCD显示八进制void on_radioBtnHex_clicked();//设置LCD显示十六进制void on_SliderH_valueChanged(int value);void on_ScrollBarV_sliderMoved(int position);void on_ScrollBarH_sliderMoved(int position);void on_SliderRed_valueChanged(int value); // Slidered的valueChanged()信号的响应//    void on_ScrollBarH_valueChanged(int value);private:Ui::Widget *ui;
};#endif // WIDGET_H

(3)widget.cpp文件

#include "widget.h"
#include "ui_widget.h"#include    <QString>
#include    <QPalette>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);this->setLayout(ui->horizontalLayout);  //设置窗口的主布局组件QObject::connect(ui->SliderGreen,SIGNAL(valueChanged(int)),  //关联 SliderGreen 的valueChanged()this,SLOT(on_SliderRed_valueChanged(int)));QObject::connect(ui->SliderBlue,SIGNAL(valueChanged(int)), //关联 SliderBlue的valueChanged()this,SLOT(on_SliderRed_valueChanged(int)));QObject::connect(ui->SliderAlpha,SIGNAL(valueChanged(int)),  //关联 SliderAlpha的valueChanged()this,SLOT(on_SliderRed_valueChanged(int)));
}Widget::~Widget()
{delete ui;
}void Widget::on_SliderV_valueChanged(int value)
{ui->progBarV->setValue(value);ui->ScrollBarV->setValue(value);//    ui->progBarH->setValue(value);
}//void Widget::on_btnIniItems_clicked()
//{
//    int i, cnt=20;QString str;
//    ui->cBoxTest->clear();
//    for (i=0;i<cnt;i++)
//    {str=QString::asprintf("Item %d",i);
//        ui->cBoxTest->addItem(QString::asprintf("Item %d",i));
//    }
//}//void Widget::on_btnClearItems_clicked()
//{
//    ui->cBoxTest->clear();
//}//void Widget::on_cBoxTest_currentIndexChanged(const QString &arg1)
//{
//    ui->LabCurText->setText("当前选择项:"+arg1);
//}//void Widget::on_chkBoxEditable_clicked(bool checked)
//{
//    ui->cBoxTest->setEditable(checked);
//}//转动表盘,获得的值显示在LCD组件中。
void Widget::on_dial_valueChanged(int value)
{  //设置LCD的显示值等于Dial的值ui->LCDDisplay->display(value);
}//单击“LCD显示进制”的RadioButton时,设置LCD的显示进制。
void Widget::on_radioBtnDec_clicked()
{ //设置LCD显示十进制数ui->LCDDisplay->setDigitCount(3);//显示数的位数ui->LCDDisplay->setDecMode();//显示进制数
}void Widget::on_radioBtnBin_clicked()
{ //设置LCD显示二进制数ui->LCDDisplay->setDigitCount(8);ui->LCDDisplay->setBinMode();
}void Widget::on_radioBtnOct_clicked()
{ //设置LCD显示八进制数ui->LCDDisplay->setDigitCount(4);ui->LCDDisplay->setOctMode();
}void Widget::on_radioBtnHex_clicked()
{ //设置LCD显示十六进制数ui->LCDDisplay->setDigitCount(3);ui->LCDDisplay->setHexMode();
}void Widget::on_SliderH_valueChanged(int value)
{//QProgressBar组件、QScrollBar组件随QSlider的值变化而变化ui->progBarH->setValue(value); ui->ScrollBarH->setValue(value);
}void Widget::on_ScrollBarV_sliderMoved(int position)
{//QProgressBar组件使用    ui->progBarV->setValue(position);
}void Widget::on_ScrollBarH_sliderMoved(int position)
{//QProgressBar组件使用   ui->progBarH->setValue(position);
}
//使用4个滑动条输入红、绿、蓝三色和Alpha值,然后合成颜色,作为一个QTextEdit组件的底色。
void Widget::on_SliderRed_valueChanged(int value)
{  //拖动Red、Green、Blue 颜色滑动条时设置textEdit的底色Q_UNUSED(value);QColor  color;int R=ui->SliderRed->value();  //读取SliderRed的当前值int G=ui->SliderGreen->value();//读取 SliderGreen 的当前值int B=ui->SliderBlue->value();//读取 SliderBlue 的当前值int alpha=ui->SliderAlpha->value();//读取 SliderAlpha 的当前值color.setRgb(R,G,B,alpha); //使用QColor的setRgb()函数 获得颜色//    QPalette  pal;QPalette pal=ui->textEdit->palette();//获取textEdit原有的 palettepal.setColor(QPalette::Base,color); //设置palette的基色(即背景色)ui->textEdit->setPalette(pal);//设置为textEdit的palette,改变textEdit的底色
}

(4)widget.ui文件

(5)运行界面

相关文章:

  • 【GlobalMapper精品教程】067:基于无人机航拍照片快速创建正射影像图
  • zookeeper常用接口
  • 机器学习基本概念介绍 2023
  • 【Spring教程25】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC入门案例总结与SpringMVC工作流程分析
  • 深入理解网络中断:原理与应用
  • 14、SQL注入——HTTP文件头注入
  • 【数据结构高阶】红黑树
  • C_3练习题答案
  • 区间合并|LeetCode100136:统计好分割方案的数目
  • Flink State 状态原理解析 | 京东物流技术团队
  • 区块链媒体宣发:揭示优势与趋势,引领信息传播新时代
  • 操作系统笔记——储存系统、文件系统(王道408)
  • 智能优化算法应用:基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 强化学习(二)——Dueling Network(DQN改进)
  • 公务员常考应用文公文格式模板
  • 【技术性】Search知识
  • Angular 响应式表单 基础例子
  • Docker入门(二) - Dockerfile
  • ES6系列(二)变量的解构赋值
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java的Interrupt与线程中断
  • k个最大的数及变种小结
  • Meteor的表单提交:Form
  • Node项目之评分系统(二)- 数据库设计
  • opencv python Meanshift 和 Camshift
  • PHP的Ev教程三(Periodic watcher)
  • Vue2.x学习三:事件处理生命周期钩子
  • vue-cli在webpack的配置文件探究
  • 工作手记之html2canvas使用概述
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 后端_ThinkPHP5
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 树莓派 - 使用须知
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 自制字幕遮挡器
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 交换综合实验一
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 透过事物看本质的能力怎么培养?
  • #include到底该写在哪
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Oracle)SQL优化技巧(一):分页查询
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (独孤九剑)--文件系统
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (三)终结任务
  • (十六)视图变换 正交投影 透视投影
  • (一)RocketMQ初步认识
  • (原)本想说脏话,奈何已放下
  • .net core 6 redis操作类