【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_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)运行界面

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

StackGres 1.6,可私有部署的云原生数据库中间件平台工程

StackGres 数据库平台工程简介 Enterprise Postgres made easy. On Kubernetes StackGres 是 Kubernetes 的全栈 PostgreSQL 发行版&#xff0c;打包成一个简单的部署单元。 使用精心选择和调优的 PostgreSQL 组件。 一个企业级的 PostgreSQL 栈需要几个其他的生态系统组件和重…

4 STM32MP1 Linux系统启动过程

1. ROM代码 这是ST官方写的代码&#xff0c;在STM32MP1出厂时就已经烧录进去&#xff0c;不能被修改。ROM代码是上电以后首先执行的程序&#xff0c;它的主要工作就是读取STM32MP1的BOOT引脚电平&#xff0c;然后根据电平来判断当前启动设备&#xff0c;最后从选定的启动设备里…

案例048:基于微信小程序电影订票系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Navicat 与 华为云 GaussDB 合作再升级,赋能 GaussDB 分布式数据库

2023 年第三季度&#xff0c;Navicat 首次支持了华为云 GaussDB 主备版数据库。经过双方团队进一步的深化合作&#xff0c;Navicat 完成了 GaussDB 分布式的研发适配工作&#xff0c;赋能 GaussDB 全域数据库产品。 GaussDB 数据库分为主备版和分布式版两种模式。主备版适用于…

【React】使用react hooks实现评论示例

实现功能 1、渲染评论列表 2、删除评论 3、渲染导航栏和高亮 4、评论列表排序功能 5、获取评论 6、点击发布按钮发布评论 7、清空输入框 8、重新聚焦 实现代码 1、需要引入 import React, { useRef, useState } from react import avatar from "../logo.png" //头…

Linux socket编程(11):Unix套接字编程及通信例子

Unix套接字是一种用于在同一台计算机上的进程间通信的一种机制。它是Linux和其他类Unix系统中的一项特性&#xff0c;通过在文件系统中创建特殊的套接字文件&#xff0c;进程可以通过这些套接字文件进行通信。 文章目录 1 Unix和TCP套接字对比2 Unix套接字初始化流程3 例:服务端…

【springboot】整合redis和定制化

1.前提条件:docker安装好了redis,确定redis可以访问 可选软件: 2.测试代码 (1)redis依赖 org.springframework.boot spring-boot-starter-data-redis (2)配置redis &#xff08;3&#xff09; 注入 Resource StringRedisTemplate stringRedisTemplate; 这里如果用Autowi…

HarmonyOS学习--了解基本工程目录

1.工程级目录 工程的目录结构如下&#xff1a; 其中详细如下&#xff1a; AppScope中存放应用全局所需要的资源文件。entry是应用的主模块&#xff0c;存放HarmonyOS应用的代码、资源等。oh_modules是工程的依赖包&#xff0c;存放工程依赖的源文件。build-profile.json5是工…

FPGA实现电机位置环、速度环双闭环PID控制

一、设计思路 主要设计思路就是根据之前写的一篇FPGA实现电机转速PID控制&#xff0c;前面已经实现了位置环的控制&#xff0c;思想就是通过电机编码器的当前位置值不断地修正PID去控制速度。 那为了更好的实现控制&#xff0c;可以在位置环后加上速度环&#xff0c;实现电机位…

【S32K3环境搭建】-0.2-安装S32DS product updates和 packages

目录 1 安装S32DS product updates和 packages 1.1 方法一&#xff1a;通过S32DS Extensions and Updates安装product updates和 packages 1.2 方法二&#xff1a;通过Install New Software…安装product updates和 packages 2 S32DS product updates和 packages安装后的效…

1-4节电池升降压充电IC解决方案

描述 MP2760是一款集成窄电压DC&#xff08;NVDC&#xff09;电源路径管理功能和USB On-the-Go(OTG)功能的升降压充电IC&#xff0c;兼容USB PD&#xff0c;适用于单节至4节串联的电池包应用。该芯片的充电输入电压范围广&#xff0c;可支持最高22V。 当启用电池放电模式&…

网络安全威胁——中间人攻击

中间人攻击 1. 定义2. 中间人攻击如何工作3. 常见中间人攻击类型4. 如何防止中间人攻击 1. 定义 中间人攻击&#xff08;Man-in-the-Middle Attack&#xff0c;简称MITM&#xff09;&#xff0c;是一种会话劫持攻击。攻击者作为中间人&#xff0c;劫持通信双方会话并操纵通信过…

Java数据结构之《最短路径》(难度系数100)

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度偏难(偏难理解)的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题…

Android Chips(标签)

目录 一、流式布局标签发展历程 二、类型及使用 2.1 Chip.Action(默认值) 2.2 Chip.Entry 2.3 Chip.Filter 2.4 Chip.Choice 三、常用事件 3.1 OnClickListener 3.2 OnCheckedChangeListener 3.3 OnCloseIconClickListener 四、ChipGroup 4.1 ChipGroup Chip.Choi…

计算机组成学习-中央处理器总结

复习本章时&#xff0c;思考以下问题&#xff1a; 1)CPU分为哪几部分&#xff1f;分别实现什么功能&#xff1f; 2)指令和数据均存放在内存中&#xff0c;计算机如何从时间和空间上区分它们是指令还是数据&#xff1f; 3)什么是指令周期、机器周期和时钟周期&#xff1f;它们之…

java小工具util系列3:JSON转实体类对象工具

文章目录 准备工作1.JSONObject获取所有的key2.集合中实体对象转换 list中Enrey转Dto3.字符串转List<BusyTimeIndicatorAlarmThreshold>4.json字符串转JSONObject5.list根据ids数组过滤list6.json字符串转JavaBean对象7.json对象转javabean8.jsonObject转map9.List\<U…

IDEA中,光标移动快捷键(Shift + 滚轮前后滚动:当前文件的横向滚动轴滚动。)

除此之外&#xff0c;其他常用的光标移动快捷键包括&#xff1a; Shift 滚轮前后滚动&#xff1a;当前文件的横向滚动轴滚动。Shiftenter&#xff1a;快速将鼠标移动到下一行。Ctrl ]&#xff1a;移动光标到当前所在代码的花括号结束位置。Ctrl 左方向键&#xff1a;光标跳转…

IDEA插件配置--maven篇

仓库地址 IDEA中maven插件仓库默认地址&#xff1a;C:\Users\Administrator.m2\repository 在D盘新建一个文件夹用做本地仓库地址&#xff0c;例如 D:\Program Files\maven\repository&#xff0c;将原先C盘路径下的repository拷贝到D盘 修改settings.xml配置文件 镜像地…

基于微服务架构的外卖系统源码开发

在当前互联网时代&#xff0c;外卖行业蓬勃发展&#xff0c;用户对于高效、智能的外卖服务需求不断增加。为了满足这一需求&#xff0c;采用微服务架构的外卖系统成为了开发的主流方向。本文将探讨基于微服务的外卖系统源码开发&#xff0c;涉及到关键技术和示例代码。 1. 微…

SpringBoot3-快速体验

1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…