QT:核心控件-QWidget

文章目录

  • 控件
    • enable
    • objectName
    • geometry
    • setWindowTitle
    • opacity
    • cursor
    • Font
    • tooltip
    • styleSheet

控件

什么是控件?

在这里插入图片描述
如上所示,就是控件,而本篇要做的就是对于这些控件挑选一些比较有用的常用的进行讲解分析

在QT的右侧,会有对应的空间属性,那么下面就依照内容的属性来进行一一分析:

在这里插入图片描述

enable

在这里插入图片描述
该按钮表示的是是否可用,如果是出于可用就是可用,而禁用就是不能用,也就意味着这个控件不能接收任何输入等,而且也会显示一个灰色的字样,表示的是这个子元素被禁用,下面用代码演示

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setEnabled(false);connect(ui->pushButton, &QPushButton::clicked, this, &QWidget::close);
}Widget::~Widget()
{delete ui;
}

在这里插入图片描述

objectName

在这里插入图片描述
在这里插入图片描述依据这个原理,就可以实现一个用按钮进行切换可用状态

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << "执行了槽函数";
}void Widget::on_pushButton_enable_clicked()
{// 获取到状态,再切换状态bool status = ui->pushButton->isEnabled();ui->pushButton->setEnabled(!status);
}

geometry

该单词的意思是,几何学,几何的意思,因此这个属性是和坐标向关联的

这个单词可以看成是四个属性的统称,例如有x,y,width,height

在这里插入图片描述
move和setGeometry?

move是来修改位置的,而后者都可以修改,包括位置和尺寸等

下面用一个例子来进行理解:

在这里插入图片描述
现在根据这个界面,对于上面的按钮进行位置移动:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_up_clicked()
{// 把空间信息拿出来QRect rect = ui->pushButton_target->geometry();// 把y改一下rect.setY(rect.y() - 5);ui->pushButton_target->setGeometry(rect);
}void Widget::on_pushButton_right_clicked()
{// 把空间信息拿出来QRect rect = ui->pushButton_target->geometry();// 把x改一下rect.setX(rect.x() + 5);ui->pushButton_target->setGeometry(rect);
}void Widget::on_pushButton_down_clicked()
{// 把空间信息拿出来QRect rect = ui->pushButton_target->geometry();// 把y改一下rect.setY(rect.y() + 5);ui->pushButton_target->setGeometry(rect);
}void Widget::on_pushButton_left_clicked()
{// 把空间信息拿出来QRect rect = ui->pushButton_target->geometry();// 把x改一下rect.setX(rect.x() - 5);ui->pushButton_target->setGeometry(rect);
}

那如何实现一个平移的效果呢?

在这里插入图片描述
只需要都替换为这样的写法即可

setWindowTitle

在QT中可以使用这个属性来进行窗口的名字设置:

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 对窗口的名字进行设置this->setWindowTitle("更改Windows名字");// 对按钮的名字进行设置QPushButton* button = new QPushButton(this);button->setWindowTitle("更改按钮名字");
}Widget::~Widget()
{delete ui;
}

在这里插入图片描述
不过值得注意的是,虽然没有报错,但是实际上是不可以对于按钮进行设置的,从名字可以看出这个函数是用来对于窗口进行设置的,使用这个函数进行设置按钮是无效的,虽然不报错,但是确实无效

opacity

这个属性是用来进行透明度设置的,具体如下

首先在ui界面中,增加两个按钮选项

在这里插入图片描述
下面进行如下设置,对这两个选项进行槽函数设置和一些其他设置

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton_add->setText("增加透明度");ui->pushButton_del->setText("减少透明度");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_add_clicked()
{// 对于透明度进行增加float opacity = this->windowOpacity();this->setWindowOpacity(opacity + 0.1);
}void Widget::on_pushButton_del_clicked()
{// 对透明度进行减少float opacity = this->windowOpacity();this->setWindowOpacity(opacity - 0.1);
}

在这里插入图片描述

cursor

设置鼠标悬停时的形状

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setText("按钮");ui->pushButton->setCursor(QCursor(Qt::WaitCursor));
}Widget::~Widget()
{delete ui;
}

而这个悬停时显示的图标,其实也可以进行自定义设置,这里我先选取一张图片

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setText("按钮");// 读取到这个图片信息QPixmap pixmap(":/pet.png");// 缩放图片pixmap.scaled(10, 10);// 把这个设置到按钮中,并且更改热点位置ui->pushButton->setCursor(QCursor(pixmap, 10, 10));
}Widget::~Widget()
{delete ui;
}

Font

这个内容主要是针对于标签中文字的属性来进行设置的,例如我们要设置字体为仿宋,20号大小,加粗倾斜,加下划线和删除线:

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("这是一段文字");QFont font;font.setFamily("仿宋");font.setPointSize(20);// 加粗font.setBold(true);// 倾斜font.setItalic(true);// 加下划线font.setUnderline(true);// 加删除线font.setStrikeOut(true);// 再把这个字体设置到label中label->setFont(font);
}Widget::~Widget()
{delete ui;
}

在这里插入图片描述

tooltip

这个模块主要是来设置的是关于悬浮到一个按钮上的提示词的问题

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置悬浮提示ui->pushButton_yes->setToolTip("这是yes按钮");ui->pushButton_yes->setToolTipDuration(3000);ui->pushButton_no->setToolTip("这是no按钮");ui->pushButton_no->setToolTipDuration(7000);
}Widget::~Widget()
{delete ui;
}

styleSheet

简单来说就是设置文本样式,我们通过一个设置日间和黑夜模式来理解这个功能

在这里插入图片描述

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 对按钮的文本进行设置ui->pushButton_dark->setText("夜间模式");ui->pushButton_light->setText("日间模式");// 设置一下背景板this->setStyleSheet("background-color: #333");// 设置一下文本框和按钮ui->textEdit->setStyleSheet("background-color: #333; color: #fff");ui->pushButton_dark->setStyleSheet("color: fff");ui->pushButton_light->setStyleSheet("color: #333");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_dark_clicked()
{// 点击夜间模式,那么背景板应该是黑色,字体应该是白色this->setStyleSheet("background-color: #000; color: #fff");// 按钮也是黑色ui->pushButton_dark->setStyleSheet("color: #fff");ui->pushButton_light->setStyleSheet("color: #fff");
}void Widget::on_pushButton_light_clicked()
{// 点击日间模式,那么背景板是白色,字体应该是黑色this->setStyleSheet("background-color: #fff; color: #000");// 按钮也是白色ui->pushButton_dark->setStyleSheet("color: #000");ui->pushButton_light->setStyleSheet("color: #000");
}

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

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

相关文章

asp.net朱勇项目个人博客(3)

引文:按照书上的项目&#xff0c;我们最后实现管理端的三个增删改查的功能即可,相对与三个增删改查&#xff0c;文章&#xff0c;分类和留言&#xff0c;这里我们所需要用的的关联的一个表就是文章表&#xff0c;因为文章表每一个文章的增加显示和修改都需要对应的一个分类&…

【C++11新特性】lambda表达式和应用场景

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

汽车电子零部件(13):BMS电池管理系统

前言: 电池管理系统(BMS)确保电动汽车(EV)的能量分配安全高效。目前流行电动汽车中使用的有四种主要BMS架构,BMS与充电基础设施互为集成关系。BMS主要管理 的是电池组,电池组由很多电芯组成,比如下图是H/EV电池组的主要部件,显示了电池、连接、控制电路和包装的总体布…

毕业设计:《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》

前言 《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》&#xff0c;这是我在本科阶段的毕业设计&#xff0c;通过引入 Prometheus 和 ELK 架构实现企业对指标与日志的全方位监控。并且基于云原生&#xff0c;使用容器化持续集成部署的开发方式&#xff0c;通过 Sprin…

如何通过wifi网络将串口数据发送到多个设备

摘要&#xff1a;当lora电台的速率无法满足高速传输时&#xff0c;可以考虑用“串口服务器”。本文介绍一下如何使用TP-LINK的TL-CPE300D实现一对多的数据发送。 当前也有使用lora电台的&#xff0c;但是lora电台支持的速率有限&#xff0c;可能最大支持到9600&#xff0c;甚至…

【VTKExamples::Rendering】第一期 TestAmbientSpheres(环境照明系数)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestAmbientShperes,介绍环境照明系数对Actor颜色的影响,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动…

部署 Sentinel 控制台:实现流量管理和监控

序言 Sentinel 是阿里巴巴开源的一款流量防护与监控平台&#xff0c;它可以帮助开发者有效地管理微服务的流量&#xff0c;实现流量控制、熔断降级、系统负载保护等功能。本文将介绍如何在项目中部署和配置 Sentinel 控制台&#xff0c;实现微服务的流量防护和监控。 一、Sen…

《Python机器学习 》书籍分享

文章目录 前言内容介绍作者简介书籍目录 前言 随着计算能力的快速增长&#xff0c;大量任务都可在台式机上完成&#xff1b;在这样的背景下&#xff0c;机器学习应运而生&#xff0c;成为当今炙手可热的话题。但初出茅庐的新手常对机器学习感到十分畏惧&#xff1b;为给这些新…

RabbitMQ 是如何做延迟消息的 ?——Java全栈知识(15)

RabbitMQ 是如何做延迟消息的 &#xff1f; 1、什么是死信&#xff1f; 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dead letter&#xff09;&#xff1a; 消费者使用 basic.reject 或 basic.nack 声明消费失败&#xff0c;并且消息的 reque…

推荐5个免费的国内平替版GPT

提起AI&#xff0c;大家第一个想到的就是GPT。 虽然它确实很厉害&#xff0c;但奈何于我们水土不服&#xff0c;使用门槛有些高。 不过随着GPT的爆火&#xff0c;现在AI智能工具已经遍布到各行各业了&#xff0c;随着时间的推移&#xff0c;国内的AI工具也已经“百花盛放”了…

如何添加、编辑、调整WordPress菜单

我们最近在使用WordPress建站建设公司网站。我们是使用的hostease的主机产品建设的WordPress网站。在建设网站使用遇到了一些WordPress菜单使用方面的问题。好在hostease提供了不少帮助。 下面把WordPress菜单使用心得分享一下。 本文将详细介绍WordPress菜单的各种功能&#x…

智能家居|基于SprinBoot+vue的智能家居系统(源码+数据库+文档)

智能家居目录 基于SprinBootvue的智能家居系统 一、前言 二、系统设计 三、系统功能设计 1管理员&#xff1a;个人中心管理功能的详细实现 2管理员&#xff1a;用户信息管理功能的详细实现 3管理员&#xff1a;家具管理功能的详细实现 4管理员&#xff1a;任务管理功能…

QT+串口调试助手+扩展版

前言&#xff1a;此文章是这篇文章的拓展 QT串口调试助手基本版-CSDN博客&#xff0c;如果需要独立完成串口调试助手直接看基本版文章即可&#xff0c;如果需要完成串口调试助手的其他功能&#xff0c;参考拓展版。 一、更新QT串口调试助手UI界面 1、ui串口设置界面 2、ui串口…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍&#xff1a;重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场&#xff08;眼见不一定为实&#xff09;破案1&#xff1a;抓顶风作案的反贼&#xff01;&#xff01;&#xff01;破案2&#xff1a;破隐身抓刺客&#xff01;&#xff01;&#xff01;杀器&am…

[1726]java试飞任务规划管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java试飞任务规划管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文&#xff1a;Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought&#xff08;CoT&#xff09; prompting 的方法通过结合 few-show prompt 的思路&#xff0c;让 LLM 能够挑战更具…

我的Transformer专栏来啦

五一节前吹的牛&#xff0c;五一期间没完成&#xff0c;今天忙里偷闲&#xff0c;给完成了。 那就是初步拟定了一个《Transformer最后一公里》的写作大纲。 之前一直想写一系列Transformer架构的算法解析文章&#xff0c;但因为一直在忙&#xff08;虽然不知道在忙啥&#xf…

Linux0.11中MINIX 文件系统

阅读linux 的源码的时候对minix 文件系统有很多的疑惑&#xff0c;根据自己的认识将这些做一个总结。 MINIX 文件系统由六个部分组成&#xff0c;分别是引导块&#xff0c;超级块&#xff0c;i结点位图&#xff0c;逻辑块位图&#xff0c;i结点&#xff0c;数据块。 引导块&am…

数据结构的堆(c语言版)

一.堆的概念 1.堆的基本概念 在计算机科学中&#xff0c;堆是一种特殊的数据结构&#xff0c;通常用于实现优先队列和动态分配内存。 2.堆的特征 堆是一个完全二叉树&#xff0c;它具有以下两个主要特性&#xff1a; 堆序性&#xff1a;对于最大堆&#xff0c;在堆中的任意节…

wpf转换器

WPF&#xff08;Windows Presentation Foundation&#xff09;中的转换器主要是指IValueConverter接口的实现&#xff0c;它用于在数据绑定过程中转换源数据和目标数据的类型或表示形式。这种机制使得开发者能够灵活地处理数据&#xff0c;特别是在用户界面&#xff08;UI&…