【QT】常用控件|widget|QPushButton|RadioButton|核心属性

news2025/1/11 14:23:20

 

目录

​编辑 

概念

信号与槽机制

控件的多样性和定制性 

核心属性 

enabled

geometry

​编辑 windowTiltle 

 windowIcon

toolTip

styleSheet

PushButton

 RadioButton


 

概念

QT 控件是构成图形用户界面(GUI)的基础组件,它们是实现与用户交互、展示信息、收集输入的关键元素。在使用Qt进行界面开发时,掌握这些基础控件的特性和用法,是构建高效、美观应用的前提。

信号与槽机制

信号与槽机制是QT的核心特性,这让控件间的通信变得简单而高效。我们可以轻松地将一个控件的事件(如按钮点击)连接到另一个控件或自定义函数上,实现复杂的交互逻辑。 

控件的多样性和定制性 

  • QT的控件库非常丰富,几乎涵盖了所有常见的界面元素,允许对控件进行定制,包括外观、行为和功能上的修改,以满足特定的设计需求。
  • 使用样式表(QSS)来改变控件的外观,类似于网页开发中的CSS

核心属性 

属性作用
enabled设置控件是否可使⽤.true表示可用,false表示禁用
geometry位置和尺寸,包含x,y,width,height四个部分。坐标以父元素为参考设置

windowTitle

设置widget标题
windowIcon设置widget图标
windowOpacity设置widget透明度
cursor鼠标悬停时显示的图标形状,Qt Designer界面有很多可选项
font设置字体相关属性,涉及字体家族,字体大小,粗体,斜体,下划线等
toolTip鼠标悬停在widget上的提示信息
toolTipDuringtoolTip显示的持续时间

enabled

  • isEnabled():获取控件的可用状态
  • setEnabled:设置控件是否可用,true表示可用,false表示禁用

geometry

 

X坐标向右增加,Y坐标向下增加

  • geometry:获取当前控件的位置和尺寸
  • setGeometry(QRect):设置控件的尺寸和位置,可以接受一个整体参数,也可以分四个属性 
//设置目标按钮移动

void Widget::on_pushButton_up_clicked()
{
    //控制目标按钮往上移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
    qDebug()<<"up";
}

void Widget::on_pushButton_left_clicked()
{
    //控制目标按钮左移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
    qDebug()<<"left";
}

void Widget::on_pushButton_down_clicked()
{
    //控制目标按钮往下移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
    qDebug()<<"down";
}

void Widget::on_pushButton_right_clicked()
{
    //控制目标按钮往右移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
    qDebug()<<"right";
}

 windowTiltle 

this->setWindowTitle("这是标题");

 windowIcon

  • windowIcon():获取控件的窗口图标,返回QIcon对象
  • setWindowIcon(constQIcon& icon):设置控件的窗口图标

创建Qt-ResourceFile 文件,将其需要的图片导入

    // : 该冒号使用的规则
    // /  是前缀,就是步骤1设置的,前缀什么样,这里就写什么 后面跟路径
    //    image.jpg  图片属性
QIcon icon(":/image.jpg");

windowOpacity

  • windowOpacity():获取控件的不透明值,返回float类型,取值范围:0.0~1.0。其中0.0表示全透明,1.0表示不透明
  • setWindowOpacity(float n): 设置不透明度数值

cursor

cursor():获取当前widget的cursor属性,返回QCursor对象,当鼠标悬停在widget上时,显示对应的形状

//设置了一个按钮 设置cursor   将设置为等待状态的形状
  button->setCursor(QCursor(Qt::WaitCursor));

font

  • font():获取当前widget字体信息,返回QFont对象
  • setFont(const QFont& font):设置当前widget字体信息
  • family:字体家族,比如宋体,黑体等
  • bold:是否加粗
  • italic:是否倾斜
  • underline:是否带下划线

....

 // 设置label 的⽂本内容
    ui->label->setText("这是⼀段⽂本");
    // 创建字体对象
    QFont font;
    
    // 设置字体家族
    font.setFamily("仿宋");
    
    // 设置字体⼤⼩
    font.setPointSize(20);
    
    // 设置字体加粗
    font.setBold(true);
    // 设置字体倾斜
    font.setItalic(true);
    
    // 设置字体下划线
    font.setUnderline(true);
    
    // 设置字体删除线
    font.setStrikeOut(true);
    
    // 设置字体对象到label 上
    ui->label->setFont(font);

toolTip

设置鼠标在widget悬停的提示说明;

setToolTipDuring:设置持续的时间

如图:

 //设置widget的提示信息
    ui->pushButton_library->setToolTip(" 重庆市图书馆");
    //设置提示信息持续时间
    ui->pushButton_library->setToolTipDuration(3000);

注意:这里的单位是1ms; 1s = 1000ms;z

styleSheet

设置文本样式

PushButton

表示一个按钮,继承自QAbstractButton.

属性说明
text

按钮中的文本

icon按钮中的图标
iconSize按钮中图标的尺寸
shortCut按钮对应的快捷键

需要设置图标时,依然创建.qrc文件,导入对应图片即可 

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

       //设置目标文件的图像和大小
    QIcon icon(":/image/target.png");
    ui->pushButton_target->setIcon(icon);
    ui->pushButton_target->setIconSize(QSize(60,60));

    //设置方向图标
    ui->pushButton_up->setIcon(QIcon(":/image/up.png"));
    ui->pushButton_left->setIcon(QIcon(":/image/left.png"));
    ui->pushButton_down->setIcon(QIcon(":/image/down.png"));
    ui->pushButton_right->setIcon(QIcon(":/image/right.png"));


    //设置快捷键
        //此方法容易出错,使用枚举
//    ui->pushButton_up->setShortcut(QKeySequence("w"));
//    ui->pushButton_left->setShortcut(QKeySequence("a"));
//    ui->pushButton_down->setShortcut(QKeySequence("s"));
//    ui->pushButton_right->setShortcut(QKeySequence("d"));

    ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_W));
    ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_A));
    ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_S));
    ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_D));

    //也可以设置组合快捷键
    //ui->pushButton_right->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_D));
}

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


//设置目标按钮移动

void Widget::on_pushButton_up_clicked()
{
    //控制目标按钮往上移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
    qDebug()<<"up";
}

void Widget::on_pushButton_left_clicked()
{
    //控制目标按钮左移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
    qDebug()<<"left";
}

void Widget::on_pushButton_down_clicked()
{
    //控制目标按钮往下移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
    qDebug()<<"down";
}

void Widget::on_pushButton_right_clicked()
{
    //控制目标按钮往右移动

    //1.获取目标按钮的位置
    QRect rect = ui->pushButton_target->geometry();

    //2.更改位置信息
    ui->pushButton_target->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
    qDebug()<<"right";
}

 RadioButton

单选按钮,具有排他属性,可以在多个选项选个一个

当然也可以将多个单选按钮设组,不同组的单选按钮不影响

checkable:是否能选择

checked:是否已经被选中

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

    //设置默认按钮
    ui->radioButton_male->setChecked(true);
    ui->label->setText("默认选择男性");

   //禁用其它按钮         //该选项,禁用按钮,但还是点击后会触发该按钮事件
    //ui->radioButton_other->setCheckable(false);

    //选择setEnabled 是更为彻底的禁用方式,不会显示出发按钮事件
    ui->radioButton_other->setEnabled(false);
}

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


void Widget::on_radioButton_male_clicked()
{
    //点击该单选按钮,设置性别为男
    ui->label->setText("你选择的性别是:男性");
}

void Widget::on_radioButton_female_clicked()
{
    //点击该单选按钮,设置性别为女
    ui->label->setText("你选择的性别是:女性");
}

void Widget::on_radioButton_other_clicked()
{
    //点击该单选按钮,设置性别为其它
    ui->label->setText("你选择的性别是:其它");

   // qDebug()<<"其它";
}

 

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

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

相关文章

第十四届蓝桥杯省赛C++B组E题【接龙数列】题解(AC)

需求分析 题目要求最少删掉多少个数后&#xff0c;使得数列变为接龙数列。 相当于题目要求求出数组中的最长接龙子序列。 题目分析 对于一个数能不能放到接龙数列中&#xff0c;只关系到这个数的第一位和最后一位&#xff0c;所以我们可以先对数组进行预处理&#xff0c;将…

VMware创建新虚拟机教程(保姆级别)

&#x1f4e2; 续上一篇 最新超详细VMware虚拟机安装完整教程-CSDN博客 &#xff0c;本章将详细讲解VMware创建虚拟机。 一、创建新的虚拟机 点击【创建新的虚拟机】&#xff01; 点击【自定义&#xff08;高级&#xff09;】> 下一步&#xff01; > 默认下一步&#x…

[hive] posexplode生成从去年一月一号,到本月的月时间表

生成从去年一月一号&#xff0c;到本月的月时间表 posexplode用法&#xff1a; lateral view 表别名 as 序号列名,数组中的元素的名 1、生成序列 SELECT time_stamp_fist_day_of_last_year,--去年第一天的时间戳numfrom(SELECTsplit(repeat_o,,) o_array,time_stamp_fist_da…

【2024德国签证】去德国读博士需要申请什么签证?

德国留学签证面签的经过及注意事项 ✨&#xff01;希望我的经验可以帮助大家顺利通过签证&#xff0c;顺利开启德国留学之旅 。记得带上足够的现金和材料哦 &#xff01; 一、选择适合自己的签证类型 在选择签证类型时&#xff0c;一定要根据自己的实际情况来选择合适的签证种…

vmware虚拟机安装openEuler

一、openEuler简介 openEuler是一款开源操作系统。当前openEuler内核源于Linux&#xff0c;支持鲲鹏及其它多种处理器&#xff0c;能够充分释放计算芯片的潜能&#xff0c;是由全球开源贡献者构建的高效、稳定、安全的开源操作系统&#xff0c;适用于数据库、大数据、云计算、…

ESP32CAM物联网教学01

ESP32CAM物联网教学01 拍照 视频 这么小的一个开发板都带上摄像头了&#xff0c;能拍照&#xff1f;能视频吗&#xff1f;现在就跟着我做起来。 初识ESP32CAM 我们到淘宝搜索“ESP32Cam”&#xff0c;就能买到这样一块开发板。 ESP32Cam是双核处理器&#xff0c;提供WIFI和…

监控平台zabbix介绍与部署

目录 1.为什么要做监控 2.zabbix是什么&#xff1f; 3.zabbix 监控原理 4.Zabbix 6.0 新特性 5.Zabbix 6.0 功能组件 6.部署zabbix 6.1 部署 Nginx PHP 环境并测试 6.2 部署数据库 6.3 向数据库导入 zabbix 数据 6.4 编译安装 zabbix Server 服务端 6.5 修改 zabbix…

真的假不了,假的真不了

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 最近&#xff0c;17岁的中专生姜萍参加阿里巴巴 2024 年的全球数学竞赛&#xff0c;取得了 12 名的好成绩&#xff0c;一时间在网上沸腾不止。 从最开始的“数学天才”&#xff0c;到被质疑&#xff…

QT5 static_cast实现显示类型转换

QT5 static_cast实现显示类型转换&#xff0c;解决信号重载情况

[22] Opencv_CUDA应用之 使用背景相减法进行对象跟踪

Opencv_CUDA应用之 使用背景相减法进行对象跟踪 背景相减法是在一系列视频帧中将前景对象从背景中分离出来的过程&#xff0c;它广泛应用于对象检测和跟踪应用中去除背景 背景相减法分四步进行&#xff1a;图像预处理 -> 背景建模 -> 检测前景 -> 数据验证 预处理去除…

Sentinel实现区分来源

要区分来源就要写代码实现RequestOriginParser接口 &#xff0c;注意是要实现com.alibaba.csp.sentinel.adapter.servlet.callback.RequestOriginParser 接口&#xff0c;别搞错接口了。 MyRequestOriginParser.java package com.codex.terry.sentinel.origin;import com.ali…

JS数据处理(冒泡寻找对象里面有个Key相同的值并处理相关数据)

1.需要处理成的数据格式 [{ mpptNumber: 1, list:[{checked: false,pvEnableStatus: 0,pvSerialNumber: 1,},{checked: false,pvEnableStatus: 0,pvSerialNumber: 2,}] }, { mpptNumber: 2, list:[{checked: false,pvEnableStatus: 0,pvSerialNumber: 1,},{checked: false,pvE…

力扣hot100-普通数组

文章目录 题目&#xff1a;最大子数组和方法1 动态规划方法2 题目&#xff1a;合并区间题解 题目&#xff1a;最大子数组和 原题链接&#xff1a;最大子数组和 方法1 动态规划 public class T53 {//动态规划public static int maxSubArray(int[] nums) {if (nums.length 0…

有哪些Python书籍是程序员强烈推荐?

有一本升级版的经典Python项目编程书一定要推荐一下。 Python极客项目编程&#xff08;第2版&#xff09; 第一版累计销售19万册&#xff0c;豆瓣评分8.4。每个项目都按照【讲解原理-分析需求-代码精讲-知识小结-扩展练习-完整代码】的方式进行讲解&#xff0c;并提供可下载运…

[21] Opencv_CUDA应用之使用Haar级联的对象检测

Opencv_CUDA应用之使用Haar级联的对象检测 Haar级联使用矩形特征来检测对象,它使用不同大小的矩形来计算不同的线和边缘特征。矩形包含一些黑色和白色区域,如下图所示,它们在图像的不同位置居中 类Haar特征检测算法的思想是计算矩形内白色像素和黑色像素之间的差异这个方法的…

c++将一个复杂的结构体_保存成二进制文件并读取

在 C 中&#xff0c;可以将复杂的结构体保存到二进制文件中&#xff0c;并从二进制文件中读取它。为了实现这一点&#xff0c;你可以使用文件流库 <fstream>。以下是一个示例&#xff0c;展示如何将一个复杂的结构体保存到二进制文件中&#xff0c;并从二进制文件中读取它…

无序中的秩序:为何看似混乱的工作方式可能更高效;刚刚!研究表明:混乱可能更有利于创造力;注意!你的过度整理可能正在浪费时间

当面对循规蹈矩&#xff0c;还是自由独立的选择题时&#xff0c;你应当选择自由独立。因为这样&#xff0c;你不但更省力&#xff0c;更省心&#xff0c;而且效率更高&#xff0c;生活更好。 在日常生活和工作中,经常会遇到两种截然不同的人: • 一种是事无巨细,将一切都安排得…

【Python】成功解决TypeError: ‘float‘ object cannot be interpreted as an integer

【Python】成功解决TypeError: ‘float’ object cannot be interpreted as an integer 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主…

WSO2 products 文件上传漏洞(CVE-2022-29464)

前言 CVE-2022-29464 是一个影响多个 WSO2 产品的严重远程代码执行&#xff08;RCE&#xff09;漏洞。这些产品包括 WSO2 API Manager、WSO2 Identity Server 和 WSO2 Enterprise Integrator 等。由于用户输入验证不当&#xff0c;该漏洞允许未经身份验证的攻击者在服务器上上…

Snappy使用

Snappy使用 Snappy是谷歌开源的压缩和解压的开发包&#xff0c;目标在于实现高速的压缩而不是最大的压缩 项目地址&#xff1a;GitHub - google/snappy&#xff1a;快速压缩器/解压缩器 Cmake版本升级 该项目需要比较新的cmake&#xff0c;CMake 3.16.3 or higher is requi…