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");

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

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

相关文章

数据集学习

1&#xff0c;CIFAR-10数据集 CIFAR-10数据集由10个类的60000个32x32彩色图像组成&#xff0c;每个类有6000个图像。有50000个训练图像和10000个测试图像。 数据集分为五个训练批次和一个测试批次&#xff0c;每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机…

C++的stack和queue类(三):适配所有容器的反向迭代器

目录 前言 list的反向迭代器 list.h文件 ReverseIterator.h文件 test.cpp文件 前言 迭代器按性质分类&#xff1a; 单向&#xff1a;forward_list双向&#xff1a;list随机&#xff1a;vector / deque 迭代器按功能分类&#xff1a; 正向反向const list的反向迭代器…

uni-app web端使用getUserMedia,摄像头拍照

<template><view><video id"video"></video></view> </template> 摄像头显示在video标签上 var opts {audio: false,video: true }navigator.mediaDevices.getUserMedia(opts).then((stream)> {video document.querySelec…

分布式技术---------------消息队列中间件之 Kafka

目录 一、Kafka 概述 1.1为什么需要消息队列&#xff08;MQ&#xff09; 1.2使用消息队列的好处 1.2.1解耦 1.2.2可恢复性 1.2.3缓冲 1.2.4灵活性 & 峰值处理能力 1.2.5异步通信 1.3消息队列的两种模式 1.3.1点对点模式&#xff08;一对一&#xff0c;消费者主动…

架构设计-订单系统之订单系统的架构进化

1、单数据库架构 产品初期&#xff0c;技术团队的核心目标是&#xff1a;“快速实现产品需求&#xff0c;尽早对外提供服务”。 彼时的专车服务都连同一个 SQLServer 数据库&#xff0c;服务层已经按照业务领域做了一定程度的拆分。 这种架构非常简单&#xff0c;团队可以分开…

Pytorch: 利用预训练的残差网络ResNet50进行图像特征提取,并可视化特征图热图

1. 残差网络ResNet的结构 2.图像特征提取和可视化分析 import cv2 import time import os import matplotlib.pyplot as plt import torch from torch import nn import torchvision.models as models import torchvision.transforms as transforms import numpy as npimgname…

汽车咨询|基于SprinBoot的汽车资讯管理系统设计与实现(源码+数据库+文档)

汽车资讯管理系统目录 基于SprinBoot的汽车资讯管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff…

Promise简单概述

一. Promise是什么&#xff1f; 理解 1.抽象表达&#xff1a; Promise是一门新的技术(ES6规范) Promise是JS中进行异步编程的新解决方案(旧方案是单纯使用回调函数) 异步编程&#xff1a;包括fs文件操作&#xff0c;数据库操作(Mysql)&#xff0c;AJAX&#xff0c;定时器 2.具…

STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(3)

接前一篇文章&#xff1a;STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978&#xff08;2&#xff09; 本文参考以下文章及视频&#xff1a; STM32CbueIDE Audio播放音频 WM8978 I2S_stm32 cube配置i2s录音和播放-CSDN博客 STM32第二十二课&#xff08;I2S&#xff0c;HAL&am…

vue,table页签里的一列,点击时,会弹出时间线提示,高度自适应

需求&#xff1a;点击商品来源这一列 弹出一个时间线&#xff0c;查看商品的来源记录 <el-popover></el-popover> 弹出框组件 <el-timeline-item></el-timeline-item>时间线组件slot-scopescope slot是插槽&#xff0c;slot-scope“scope“语义更加明…

无惧烈日!看小米SU7的防晒杀手锏

小米SU7&#xff0c;为颜值设计&#xff0c;更为体验设计。 其中&#xff0c;女性车主占比近30%&#xff0c;算上给太太/女朋友、姐姐、妹妹等亲友买的&#xff0c;实际女车主预计占比是40%甚至50%。 为啥呢&#xff1f;因为小米SU7好看、防晒、收纳&#xff0c;丰富优雅。 小米…

全排列 和 排列 模板

3429. 全排列 - AcWing题库 #include<bits/stdc.h> using namespace std; string s; int n; vector<char> path; vector<vector<char>> res; bool check[10]; void dfs() {if(s.size()path.size()){res.push_back(path);return;}for(int i0;i<s.siz…

vue将html生成pdf并分页

jspdf html2canvas 此方案有很多的css兼容问题&#xff0c;比如虚线边框、svg、页数多了内容显示不全、部分浏览器兼容问题&#xff0c;光是解决这些问题就耗费了我不少岁月和精力 后面了解到新的技术方案&#xff1a; jspdf html-to-image npm install --save html-to-i…

Day:007(2) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)

Scrapy 数据的提取 Scrapy有自己的数据提取机制。它们被称为选择器。我们可以通过使用的选择器re、xpath、css提取数据 提示 不用再安装与引入Xpath,BS4 获得选择器 Response对象获取 正常使用 response.selector.xpath(//span/text()).get() response.selector.css(span::…

架构设计-权限系统之权限系统设计方案

前言 权限管理是所有后台系统的都会涉及的一个重要组成部分&#xff0c;主要目的是对不同的人访问资源进行权限的控制&#xff0c;避免因权限控制缺失或操作不当引发的风险问题&#xff0c;如操作错误&#xff0c;隐私数据泄露等问题。 目前在公司负责权限这块&#xff0c;所…

blender安装mmd并导入pmx,pmd文件

点击链接GitHub上下载这个&#xff0c;值得注意的是blender4.0以上版本暂时不支持&#xff0c;这里使用的是blender3.6版本GitHub - powroupi/blender_mmd_tools: mmd_tools is a blender addon for importing Models and Motions of MikuMikuDance. 复制当前内容 粘贴到当前…

对LSTM的通俗易懂理解--可变权重

RNN的问题&#xff1a;长期依赖&#xff0c;即对短期的数据敏感&#xff0c;对比较远的长期数据不敏感&#xff0c;这是因为RNN隐藏状态权重在不同时刻是共享相同的&#xff0c;随着时间步的增加&#xff0c;梯度会指数级地衰减或者增长&#xff0c;导致梯度消失或者爆炸&#…

040—pandas 实现RFM用户分层

使用步骤 读入数据 代码如下&#xff08;示例&#xff09;&#xff1a; # RFM 是典型的用户分层方法&#xff0c; 是评估用户消费能力、 衡量用户贡献价值的重要工具。 # RFM 代表的是最近一次消费时间间隔&#xff08;Recency&#xff09;、消费频率&#xff08;Frequency&…

qutip,一个高级的 Python 量子力学研究库!

目录 前言 安装 特性 基本功能 量子态的创建和操作 量子态的测量 示例代码 动力学模拟 高级功能 退相干和噪声模拟 控制和优化 量子信息学工具 实际应用场景 量子态演化研究 量子计算机模拟 量子纠错协议 总结 前言 大家好&#xff0c;今天为大家分享一个高级的 Pytho…

蓝桥杯-STL-string

目录 字符串定义 字符串初始化 字符串输入输出 字符串输出 字符串输入 字符串访问 字符串拷贝 字符串拼接 直接相加 append(const char*str,int n) 字符串比较 ​编辑字符串长度length()/size() 字符串查找find(string str) 查找子串substr(int a,int b) 字符串的…