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.mzph.cn/news/818083.shtml

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

相关文章

【Python实践应用】使用Python加载栅格数据

下面的代码实现的是加载伊宁市NDVI数据&#xff0c;首先进行相关的python包的导入&#xff0c;然后定义和读取我们需要加载的数据&#xff0c;这里我们使用的NDVI数据是将伊宁23年的NDVI数据合并成为了一张栅格图像&#xff0c;每个波段表示一年的 NDVI&#xff0c;我们这里显示…

MySQL学习笔记3——条件查询和聚合函数

条件查询和聚合函数 一、条件查询语句二、聚合函数1、SUM&#xff08;&#xff09;2、AVG()、MAX()、MIN()3、COUNT&#xff08;&#xff09; 一、条件查询语句 WHERE 和 HAVING 的区别&#xff1a; WHERE是直接对表中的字段进行限定&#xff0c;来筛选结果&#xff1b;HAVIN…

最新版IntelliJ IDEA 2024.1安装和配置教程 详细图文解说版安装教程

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版 文章目录 IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版前言 第一步&#xff1a; IntelliJ IDEA 2024.1安装教程第 0 步&…

Java快速入门系列-7(测试与调试)

第七章:测试与调试 第7章:测试与调试7.1 单元测试(JUnit)7.1.1 为什么要进行单元测试7.1.2 JUnit基础7.1.3 断言7.1.4 测试套件7.2 集成测试与系统测试7.2.1 集成测试7.2.2 系统测试7.3 调试技巧与工具7.3.1 断点7.3.2 单步执行7.3.3 变量检查7.3.4 条件断点7.3.5 日志记录…

Playwright已经是目前最好的测试自动化工具了吗?

作者观点&#xff1a;很长时间以来&#xff0c;Selenium是QA工程师寻求测试自动化解决方案的首选测试框架。它能够测试任何浏览器&#xff08;这在IE浏览器的统治时期尤其重要&#xff09;和任何平台。然而&#xff0c;现在看来&#xff0c;那个时代已经过去了。 今天&#xf…

【嵌入式】SD NAND:小身躯蕴含大能量的新型嵌入式存储解决方案

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

如何在Linux通过docker搭建Plik文件系统并实现无公网IP管理内网文件

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问&#xff0c;实现随时随地在任意设备上传或者…

JNI用法

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一 背景 之前搞过jni&#xff0c;之前是强哥指导搞的&#xff0c;现在感觉又忘了。 今天照着帖子再搞一次。参考帖子&#xff1a;https://blog.csdn.net/y…

前端 接口返回来的照片太大 加载慢如何解决

现象 解决 1. 添加图片懒加载 背景图懒加载 对背景图懒加载做的解释 和图片懒加载不同&#xff0c;背景图懒加载需要使用 v-lazy:background-image&#xff0c;值设置为背景图片的地址&#xff0c;需要注意的是必须声明容器高度。 <div v-for"img in imageList&quo…

交叉熵损失函数介绍

交叉熵是信息论中的一个重要概念&#xff0c;它的大小表示两个概率分布之间的差异&#xff0c;可以通过最小化交叉熵来得到目标概率分布的近似分布。 为了理解交叉熵&#xff0c;首先要了解下面这几个概念。 自信息 信息论的基本想法是&#xff0c;一个不太可能的事件发生了…

openwrt局域网配置多个IP

在局域网配置过程中&#xff0c;若是DHCP服务器关闭&#xff0c;又忘记了配置的ip&#xff0c;将很难访问到路由器重新进行配置。这种情况可以在路由器出厂时做一个备用ip去避免。 1.配置 以下是备用ip的配置方法&#xff0c;以SKYLAB的SKW99 WIFI模组为例进行说明&#xff1…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

LeetCode 59.螺旋矩阵II

LeetCode 59.螺旋矩阵II 1、题目 力扣题目链接&#xff1a;59. 螺旋矩阵 II - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1…

你想来微软苏黎世混合现实研究中心学习和实习吗?

Microsoft Mixed Reality & AI Lab - Zurich 苏黎世混合现实研发中心简介 微软苏黎世混合现实与人工智能实验室概况 专注于利用计算机视觉绘制和理解环境&#xff0c;识别和跟踪相关物体&#xff0c;并帮助用户执行任务&#xff0c;构建混合现实的未来。该实验室还在探索混…

API接口淘宝开放平台item_get-获得淘宝商品详情API接口根据商品ID查询商品标题价格描述等详情数据

要使用淘宝开放平台的item_get API接口根据商品ID查询商品标题、价格、描述等详情数据&#xff0c;你需要先注册一个KEY账号&#xff0c;然后获取到api_key和api_secret。接下来&#xff0c;你可以使用Python的requests库来调用API接口。 以下是一个示例代码&#xff1a; # c…

网络管理实验二、SNMP服务与常用的网管命令

1 常用的网管命令 1.1 网络状态监视命令 包括以下命令&#xff1a;Ipconfig、ping、nslookup、dig、host ipconfig 作用&#xff1a;用来显示本机所有网卡的基本信息&#xff08;IP、掩码、网关、工作状态&#xff09;&#xff1b;用法&#xff1a;ipconfig展示&#xff1a;…

ExtendSim花生酱加工厂模型

该模型展示了ExtendSim可靠性模块与ExtendeSim离散速率技术相结合的协同作用。 在花生酱加工厂的最初阶段&#xff0c;花生经过烘烤和冷却。冷却后的花生经过热烫或水烫去外皮。这些经过漂白的花生进入过程的混合部分&#xff0c;在研磨机中用盐、葡萄糖和氢化油稳定剂将其粉碎…

如何通过Linux pciehp sysfs接口控制PCIe Slot电源状态?-3

pciehp sysfs接口电源控制与NVME驱动卸载的区别 从NVMe SSD设计本身而言&#xff0c;当通过pciehp sysfs接口对PCIe插槽执行Power Off操作时&#xff0c;由于NVMe SSD作为PCIe设备&#xff0c;其电源供应是直接依赖于所连接的PCIe插槽提供的。当插槽电源被关闭时&#xff0c;会…

死锁检测组件

一、死锁 线程 A 占用资源 1,线程 B 占用资源 2,线程 A 想占用资源 2,线程 B 想占用资源 1,线程 A 占用资源 1 的情况下去申请占用资源 2,线程 B 占用资源 2 的情况下去申请占用资源 1,就会出现互相等待对方释放资源的情况,也就是死锁。 CPU 占用率 100% → 出现死循环或…

国产HMI芯片Model3C ——工业品质价格亲民

工业级芯片相较于消费级芯片&#xff0c;在性能上确实拥有显著的优势&#xff0c;尤其对于带彩屏显示或HMI的产品来说&#xff0c;这种优势表现得尤为突出。 首先&#xff0c;对于带彩屏显示或HMI人机交互的产品来说&#xff0c;高性能的芯片是保证流畅的用户体验和快速响应的…