Qt---控件的基本属性

文章目录

  • enabled(控件可用状态)
  • geometry(位置和尺寸)
    • 简单恶搞程序
  • windowIcon(顶层 widget 窗口图标)
    • 使用 qrc 机制
  • windowOpacity(窗口的不透明值)
  • cursor(当鼠标悬停空间上的形状)
    • 自定义鼠标图标
  • toolTip(鼠标悬停时的提示)
  • focusPolicy(控件获取焦点的策略)
  • styleSheet(通过CSS修改控件样式)

enabled(控件可用状态)

isEnabled():获取控件的可用状态
setEnabled(bool):设置控件是否可用

QPushButton *b1 = new QPushButton(this);
QPushButton *b2 = new QPushButton(this);
b1->setText("点击");
b2->setText("点击"); b2->move(0, 100);
qDebug() << "b1: " << b1->isEnabled();
b2->setEnabled(false);
qDebug() << "b2: " << b2->isEnabled();

image.png

geometry(位置和尺寸)

move 只是移动控件的位置,也就是只修改控件的位置
geometry 可以设置四个属性,位置:x,y;尺寸:width,height

geometry():获取控件的位置和尺寸,return:QRect
setGeometry(QRect)/setGeometry(int x, int y, int width, int height):设置控件位置和尺寸

QPushButton *b1 = new QPushButton(this);
QPushButton *b2 = new QPushButton(this); b2->move(20, 20);qDebug() << b1->geometry();
qDebug() << b2->geometry();
QRect q(100, 100, 50, 50);
b1->setGeometry(q);
qDebug() << b1->geometry();
b2->setGeometry(200, 200, 100, 100);
qDebug() << b2->geometry();

image.png

简单恶搞程序

QLabel *l = new QLabel(this);l->setText("和我在一起好不好");l->setGeometry(350, 200, 100, 100);QPushButton *b1 = new QPushButton(this); b1->setText("答应");QPushButton *b2 = new QPushButton(this); b2->setText("拒绝");b1->setGeometry(650, 500, 90, 30);b2->setGeometry(50, 500, 90, 30);connect(b1, &QPushButton::clicked, this, [=](){Widget::close();});connect(b2, &QPushButton::clicked, this, [=](){int x, y;x = rand() % this->geometry().width();y = rand() % this->geometry().height();b2->move(x, y);});

image.png
image.png
这个程序需要点到答应按钮就会退出窗口, 而点击拒绝按钮该按钮就会随机出现到别的地方

windowIcon(顶层 widget 窗口图标)

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

QIcon icon("d:/1.jpeg"); // 注意不可以用 \ 
this->setWindowIcon(icon);

image.png

使用 qrc 机制

上述的方法相对来说比较麻烦,因为需要用到绝对路径显然不合理。

  1. 首先创建 qrc 文件

image.png
image.png

  1. 设置前缀

image.png

  1. 添加需要的图片

image.png
image.png
因为 qrc 文件中添加图片需要在当前项目的目录中,因此选择图片之后出现这个说明:需要的图片并不在当前项目的目录或者子目录下,点击复制之后选中当前项目目录保存即可。
image.png

  1. 引用

添加完之后就可以使用了

QIcon icon(":/1.jpeg"); // 注意需要在前缀前面加上冒号
this->setWindowIcon(icon);

windowOpacity(窗口的不透明值)

windowOpacity():获取到控件的不透明数值返回 float, 取值为 0.0-1.0,其中 0.0 表示全透明, 1.0 表示完全不透明。
setWindowOpacity(float n):设置控件的不透明数值

QPushButton *b1 = new QPushButton(this); b1->setText("+");
QPushButton *b2 = new QPushButton(this); b2->setText("-");
b2->move(0, 200);connect(b1, &QPushButton::clicked, this, [=](){// 获取当前不透明值float opacity = this->windowOpacity();if(opacity >= 1.0) return;qDebug() << opacity;opacity += 0.1; // 增加值// 设置值this->setWindowOpacity(opacity);
});connect(b2, &QPushButton::clicked, this, [=](){// 获取当前不透明值float opacity = this->windowOpacity();if(opacity <= 0.0) return;qDebug() << opacity;opacity -= 0.1; // 减少值// 设置值this->setWindowOpacity(opacity);
});

image.png
image.png

cursor(当鼠标悬停空间上的形状)

cursor():获取到当前 widget 的 cursor 属性, 返回 QCursor 对象。
setCursor(const QCursor& cursor):设置该 widget 光标的形状. 仅在鼠标停留在该 widget 上时有效
QGuiApplication::setOverrideCursor(const QCursor& cursor):设置全局的形状,对整个程序中的所有 widget 都会生效覆盖

QPushButton *b1 = new QPushButton(this); b1->setText("+");
QPushButton *b2 = new QPushButton(this); b2->setText("-");
b2->move(0, 200);b1->setCursor(QCursor(Qt::WaitCursor));
b2->setCursor(QCursor(Qt::IBeamCursor));
QGuiApplication::setOverrideCursor(QCursor(Qt::IBeamCursor));

由于截图显示不出来就不截图了
Ctrl + 左键 点击 Qt::WaitCursor 跳转到源码即可看到所有的形状列表。

自定义鼠标图标

// 创建⼀个位图对象, 加载⾃定义光标图片QPixmap pixmap(":/1.jpeg");// 缩放图片的尺⼨.pixmap = pixmap.scaled(64, 64);// 创建 QCursor 对象, 并指定 "热点" 为 (2, 2) 坐标位置.// "热点" 就是⿏标点击时⽣效的位置.QCursor cursor(pixmap, 2, 2);// 设置光标this->setCursor(cursor);

toolTip(鼠标悬停时的提示)

setToolTip;设置 toolTip。
setToolTipDuring:设置 toolTip 提示的时间. 单位 ms. 时间到后 toolTip 自动消失

QPushButton *b1 = new QPushButton(this); b1->setText("+");
QPushButton *b2 = new QPushButton(this); b2->setText("-");
b2->move(0, 200);b1->setToolTip("减少透明度"); b1->setToolTipDuration(1000);
b2->setToolTip("增加透明度"); b2->setToolTipDuration(1000);

image.png

focusPolicy(控件获取焦点的策略)

焦点:选中这个元素后接下来的操作都是针对这个元素。例如输入框选中后可以往输入框中写字。

focusPolicy():获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy。
setFocusPolicy(Qt::FocusPolicy policy):设置 widget 的 focusPolicy

Qt::FocusPolicy 是⼀个枚举类型:

作用
Qt::NoFocus控件不会接受键盘焦点
Qt::TabFocus控件只可以通过Tab键接受焦点
Qt::ClickFocus控件只可以鼠标点击接受焦点
Qt::StrongFocus(默认值)控件可以通过Tab键或者鼠标点击接受焦点
Qt::WheelFocusStrongFocus和可以通过鼠标滚轮

styleSheet(通过CSS修改控件样式)

this->setStyleSheet("background-color: #333");

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法练习第15天|226.翻转二叉树

226.翻转二叉树 力扣链接https://leetcode.cn/problems/invert-binary-tree/description/ 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&am…

EDI是什么:EDI系统功能介绍

EDI全称Electronic Data Interchange&#xff0c;中文名称是电子数据交换&#xff0c;也被称为“无纸化贸易”。EDI实现企业间&#xff08;B2B&#xff09;自动化通信&#xff0c;帮助贸易伙伴和组织完成更多的工作、加快物流时间并消除人为错误。 目前国内企业实现EDI通信大多…

智慧公厕系统厂家,打造创新性智慧公厕的窍门

智慧公厕系统是利用物联网、大数据、云计算、网络通信、自动化控制等技术&#xff0c;监测公厕内部多个方面的变化&#xff0c;从而实现公厕的智能化管理。通过智慧公厕云管理平台&#xff0c;可以实现厕位空余智能引导、环境监测、资源消耗监测、安全防范管理等多种功能&#…

创建spring项目

新建spring项目时&#xff0c;而Spring3.X版本不支持JDK8&#xff0c;JDK11&#xff0c;最低支持JDK17。当JDK版本低于17时&#xff0c;选择2.x的版本。无法选择2.x的版本&#xff0c;可从pom.xml处修改。

mybatis后,将代码生成器生成的代码合并到原有的项目中去

【明白了解&#xff1a; 1&#xff09;接口只定义方法&#xff0c;&#xff08;告诉你要做什么&#xff09; 2&#xff09;具体的逻辑都写在Impl 实现类里】 3&#xff09;【不是问题 &#xff0c; idea2023对界面进行了优化&#xff0c;变好看了 】 一、鱼皮操作 1.1拖拽…

<计算机网络自顶向下> CDN

视频服务挑战 规模性异构性&#xff1a;不同用户有不同的能力&#xff08;比如有线接入和移动用户&#xff1b;贷款丰富和受限用户&#xff09;解决方法是&#xff1a;分布式的应用层面的基础设施CDN 多媒体&#xff1a;视频 视频是固定速度显示的一系列图像的序列&#xff…

优惠券布局的最终方案------css属性mask

先贴图&#xff1a; 以上这些都是通过mask去实现出来&#xff1a; <!DOCTYPE html><html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

如何将PHP的Webman框架打包成二进制文件运行

看了看webman的官方文档&#xff0c;发现居然还能打包为二进制&#xff0c;这样太厉害了吧&#xff01; 先执行这个 composer require webman/console ^1.2.24 安装这个console的包&#xff0c;然后 执行 php webman build:bin 8.1 结果谁想到它报错提示&#xff1a; 好…

清明三天,用Python赚了4万?

每年4月&#xff0c;是Python圈子里接私活的旺季&#xff0c;特别是在节假日这种数据暴增的时间段&#xff0c;爬虫采集、逆向破解类的私活订单会集中爆发&#xff0c;量大价高。几乎所有的圈内人都在趁着旺季接私活。 正好&#xff0c;我昨天就做了一单爬虫逆向私活&#xff…

自动化测试-如何优雅实现方法的依赖

在复杂的测试场景中&#xff0c;常常会存在用例依赖&#xff0c;以一个接口自动化平台为例&#xff0c;依赖关系&#xff1a; 创建用例 --> 创建模块 --> 创建项目 --> 登录。 用例依赖的问题 • 用例的依赖对于的执行顺序有严格的要求&#xff0c;比如让被依赖的方…

如何使用Fiddler做弱网测试?

1、打开Fiddler工具&#xff0c;点击Rules-Customize Rules 2、打开了一个配置文件&#xff0c;ctrlF搜索Delay sends by 300ms per KB uploaded&#xff0c; 3、修改发送延迟和下载延迟的时间&#xff0c;可以修改的大一些&#xff0c;越大延迟越久&#xff0c;修改后保存 4、…

(GPT-PLUS,RawChat,choose-car,Kimi,智谱清言)分享5个好用的ChatGPT

目录 1、GPT-PLUS拼车 2、RawChat公益站点 3、GPT-PLUS共享 4、choose-car 5、AI提示器 6、Kimi.ai - 帮你看更大的世界 7、智谱清言 1、GPT-PLUS拼车 https://home.topai.vip/list GPT-PLUS拼车 TOPAI宇宙 | Link3 2、RawChat公益站点 https://sharedchat.cn/ 3、GPT-PLUS共享…

我用了6年的 SpringBoot 项目部署方案,稳得一批!

本篇和大家分享的是springboot打包并结合shell脚本命令部署&#xff0c;重点在分享一个shell程序启动工具&#xff0c;希望能便利工作&#xff1b; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_pub…

【MATLAB源码-第54期】基于白鲸优化算法(WOA)和遗传算法(GA)的栅格地图路径规划最短路径和适应度曲线对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1.白鲸优化算法&#xff08;WOA&#xff09;&#xff1a; 白鲸优化算法是一种受白鲸捕食行为启发的优化算法。该算法模拟了白鲸群体捕食的策略和行为&#xff0c;用以寻找问题的最优解。其基本思想主要包括以下几点&#xff…

Python统计分析库之statsmodels使用详解

概要 Python statsmodels是一个强大的统计分析库,提供了丰富的统计模型和数据处理功能,可用于数据分析、预测建模等多个领域。本文将介绍statsmodels库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 安装statsmodels库非常简单,可以使用pip命令进行安装:…

4.配置USART串口实现printf打印

通过TTL转USB实现电脑和单片机连通,是我们调试必不可少的工具 查看原理图,使用USART1,它们的TX和RX分别在PA9和PA10 新建Usart.c存放串口模块的初始化 这段代码是复制了正点原子的工程,添加到前面 #if SYSTEM_SUPPORT_OS #include "includes.h" //ucos 使用 …

记录PS学习查漏补缺

PS学习 PS学习理论快捷键抠图PS专属多软件通用快捷键 PS学习 理论 JPEG &#xff08;不带透明通道&#xff09; PNG (带透明通道) 快捷键 抠图 抠图方式 魔棒工具 反选选中区域 CtrlShiftI&#xff08;反选&#xff09; 钢笔抠图注意事项 按着Ctrl单击节点 会出现当前节…

Linux安装docker(含Centos系统和Ubuntu系统)

一、Centos系统 1. 卸载旧版本依赖 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2. 设置仓库 安装所需的软件包。yum-utils 提供了 yum-config-manager &…

【C++航海王:追寻罗杰的编程之路】异常——错误处理方式之一

目录 引言 1 -> C语言传统的处理错误的方式 2 -> C异常概念 3 -> 异常的使用 3.1 -> 异常的抛出和捕获 3.2 -> 异常的重新抛出 3.3 -> 异常规范 4 -> 自定义异常体系 5 -> C标准库的异常体系 6 -> 异常的优缺点 引言 在C编程中&#xff…

MySQL中的SQL高级语句[二]

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来以下是使用脚本方法&#xff0c;也可以直接进行修改中括号&#xff0c;就代表可写可不写 有些地方的代…