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

news2024/11/25 0:26:12

目录

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_OBJECT

public:
    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原有的 palette
    pal.setColor(QPalette::Base,color); //设置palette的基色(即背景色)

    ui->textEdit->setPalette(pal);//设置为textEdit的palette,改变textEdit的底色
}

(4)widget.ui文件

(5)运行界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精准定位安全续航 无人机解决方案打造交通巡逻新模式

现代城市交通管理是城市现代化的重要组成部分&#xff0c;但传统的交通管理系统存在一系列复杂繁琐的问题&#xff0c;同时&#xff0c;交警执勤也存在较大的安全隐患。为应对这一挑战&#xff0c;复亚智能深入研究无人机技术及应用&#xff0c;推出了一套全面的无人机解决方案…

[BPE]论文实现:Neural Machine Translation of Rare Words with Subword Units

文章目录 一、完整代码二、论文解读2.1 模型架构2.2 BPE 三、过程实现四、整体总结 论文&#xff1a;Neural Machine Translation of Rare Words with Subword Units 作者&#xff1a;Rico Sennrich, Barry Haddow, Alexandra Birch 时间&#xff1a;2016 一、完整代码 这里我…

uniapp踩坑之项目:使用过滤器将时间格式化为特定格式

利用filters过滤器对数据直接进行格式化&#xff0c;注意&#xff1a;与method、onLoad、data同层级 <template><div><!-- orderInfo.time的数据为&#xff1a;2023-12-12 12:10:23 --><p>{{ orderInfo.time | formatDate }}</p> <!-- 2023-1…

D7292 双向直流电机驱动电路 ( 速度可控 ) 7V~20V 400mA,峰值电流可达1.2A 采用DIP8、SOP8的封装形式

D7292是一块带有制动和速度控制功能的双向直流电机单片电路。它可以用来驱动CDP、VCR 和 TOY等负载。该电路通过两个逻辑输入管脚的电压&#xff0c;可以控制电机正反 个方向转动以及制动。并且可以通过改变速度控制管脚的电压&#xff0c;从而方便的改变电机的速度。D7292采用…

搞笑视频无水印下载,高清无水印视频网站!

搞笑视频无水印下载这件事情一直困扰了广大网友&#xff0c;每当看见好玩好笑的搞笑视频然而下载下来的时候&#xff0c;要么画质模糊就带有水印今天分享大家几个搞笑视频无水印下载方法。 这是一个非常良心的搞笑视频无水印下载小程序水印云&#xff0c;它支持图片去水印、视…

【matlab程序】matlab画太极图|阴阳

【matlab程序】matlab画太极图|阴阳 %% 海洋与大气科学; % 时间:20231205; % clear;clc;close all; t=0:1/100000:2pi+0.00001; t1=-pi/2:1/100000:pi/2+0.00001; t2=pi/2:1/100000:3pi/2+0.00001; R=10; r=1; figure plot(Rcos(t),Rsin(t),‘color’,‘k’,‘lin…

Python下TCP编程

​ 在Python中使用socket模块的socket函数可以完成&#xff0c;语法格式如下&#xff1a; ssocket.socket(AddressFamily, Type)函数socket.socket创建一个socket&#xff0c;返回该socket的描述符。该函数带有两个参数。 Address Family&#xff1a;可以选择AF_INET&#xf…

软件测试方法之等价类测试

01 等价类划分法 1、应用场合 有数据输入的地方&#xff0c;可以使用等价类划分法。 从大量数据中挑选少量代表数据进行测试。 2、测试思想 穷举测试&#xff1a;把所有可能的数据全部测试一遍叫穷举测试。穷举测试是最全面的测试&#xff0c;但是在实际工作中不能采用&am…

Netty核心知识总结

Netty是一个高性能、异步事件驱动的NIO框架&#xff0c;它提供了对TCP、UDP和文件传输的支持&#xff0c;作为一个异步NIO框架&#xff0c;Netty的所有IO操作都是异步非阻塞的&#xff0c;通过Future-Listener机制&#xff0c;用户可以方便的主动获取或者通过通知机制获得IO操作…

群体遗传 — 核苷酸多样性π

群体遗传 — 核苷酸多样性π **核苷酸多样性&#xff08;nucleotide diversity&#xff09;&#xff0c;记为π&#xff0c;是分子遗传学中一个重要的概念&#xff0c;用于量化种群内部或不同种群间的遗传多样性。**这一概念由根井正利和李文雄在 1979 年提出。核苷酸多样性的…

zabbix的自动发现机制、代理功能、SNMP监控

一、自动发现&#xff08;不安全&#xff0c;有时会失效&#xff0c;建议手动添加主机&#xff09; 1、定义 zabbix主动与服务端联系&#xff0c;将自己的地址和端口发送给服务端&#xff0c;实现自动添加监控主机 客户端是主动的一方 2、缺点 若自定义网段中主机数量太多…

Python 全栈体系【四阶】(二)

第二章 pandas 一、pandas 介绍 Python Data Analysis Library pandas 是基于 NumPy 的一种工具&#xff0c;该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型&#xff0c;提供了高效地操作大型结构化数据集所需的工具。 二、pandas 核心数…

C语言进阶之路-数组与指针

目录 一、学习目标 二、数组入门 基本概念 语法释义&#xff1a; 定义&#xff1a; 访问&#xff1a; 赋值&#xff1a; 字符数组 多维数组 数组万能拆解法 三、指针入门 内存地址 基地址 取址符 指针基础 指针的定义&#xff1a; 指针的赋值 指针的尺寸 四、…

快手数仓面试题附答案

题目 1 讲一下你门公司的大数据项目架构&#xff1f;2 你在工作中都负责哪一部分3 spark提交一个程序的整体执行流程4 spark常用算子列几个&#xff0c;6到8个吧5 transformation跟action算子的区别6 map和flatmap算子的区别7 自定义udf&#xff0c;udtf&#xff0c;udaf讲一下…

java:slf4j、log4j、log4j2、logback日志框架的区别与示例

文章目录 背景SLF4J - 简单日志门面:Log4j - 强大而古老的日志框架:Log4j2 - Log4j的升级版:Logback - Log4j的继任者:比较Springboot集成slf4j、log4j2参考 背景 在Java开发中&#xff0c;日志记录是一个不可或缺的组成部分。为了满足不同的需求&#xff0c;Java社区涌现出多…

the name of a constructor must match the name of the enclosing class

构造器名匹配封闭类名 命令码的位置关系不对 解决&#xff1a;调整 命令码所在层级

探索人工智能领域——每日20个名词详解【day9】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

基于高德API实现网络geoJSON功能(整体)

代码实现&#xff1a; <script>// 3、初始化一个高德图层const gaode new ol.layer.Tile({title: "高德地图",source: new ol.source.XYZ({url: http://wprd0{1-4}.is.autonavi.com/appmaptile?langzh_cn&size1&style7&x{x}&y{y}&z{z},w…

Axure网页端高复用组件库, 下拉菜单文件上传穿梭框日期城市选择器

作品说明 组件数量&#xff1a;共 11 套 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;web端原型设计、桌面端原型设计 作品特色 本作品为「web端组件库」&#xff0c;高保真高交互 (带仿真功能效果)&#xff1b;运用了动态面板、中继…

Hadoop学习笔记(HDP)-Part.09 安装OpenLDAP

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …