QT:核心控件-QWidget

news2024/10/6 12:20:02

文章目录

  • 控件
    • 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.coloradmin.cn/o/1638603.html

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

相关文章

【面试经典 150 | 分治】将有序数组转换为二叉搜索树

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;中序遍历递归建树 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等…

如何有效地合并和分类多个文件目录?

在现代办公环境中&#xff0c;文件管理和组织是至关重要的。随着科技的发展&#xff0c;我们不再仅仅依赖于纸质文件&#xff0c;而是更多地使用电子设备来存储和管理信息。这种转变带来了一些新的挑战&#xff0c;其中之一就是如何有效地合并和分类多个目录文件。一&#xff0…

Sortable 拖拽行实现el-table表格顺序号完整例子,vue 实现表格拖拽行顺序号完整例子

npm install sortable<template><vxe-modalref"modalRef"v-model"showModal"title"详情"width"70vw"height"60vh"class"his"transfer><el-table ref"tableRef" :data"tableData&q…

树莓派5用docker运行Ollama3

书接上回&#xff0c;树莓派5使用1panel安装 Ollama 点击终端就可以进入容器 输入以下代码 ollama run llama3Llama3 是市场推崇的版本。您的 树莓派5上必须至少有 4.7GB 的可用空间&#xff0c;因此用树莓派玩机器学习就必须配置大容量的固态硬盘。用1panel部署网络下载速度…

4G远程温湿度传感器在农业中的应用—福建蜂窝物联网科技有限公司

解决方案 农业四情监测预警解决方案 农业四情指的是田间的虫情、作物的苗情、气候的灾情和土壤墒情。“四情”监测预警系统的组成包括管式土壤墒情监测站、虫情测报灯、气象站、农情监测摄像机&#xff0c;可实时监测基地状况,可以提高监测的效率和准确性&#xff0c;为农业生…

“Unite“ > MacOS下很不错的网站转应用App的工具

前言 前不久在浏览mac论坛&#xff0c;无意了解到一款非常好的工具&#xff0c;可以将网站转换为app&#xff0c;考虑到我们现在的主要应用都从本地客户端转成web形式使用&#xff0c;但基于本能的使用习惯&#xff0c;还是希望有个快捷的访问信息&#xff0c;这个应用非常适合…

202012青少年软件编程(Python)等级考试试卷(一级)

第 1 题 【单选题】 运行下方代码段&#xff0c;输出是6&#xff0c;则输入的可能是&#xff08; &#xff09;。 a eval(input())print(a)A :8%2 B :8/2 C :3*2 D :3**2 正确答案:C 试题解析: 第 2 题 【单选题】 关于Python变量&#xff0c;下列叙述正确的是&#x…

Offer必备算法33_DFS爆搜深搜回溯剪枝_八道力扣题详解(由易到难)

目录 ①力扣784. 字母大小写全排列 解析代码1_path是全局变量 解析代码2_path是函数参数 ②力扣526. 优美的排列 解析代码 ③力扣51. N 皇后 解析代码 ④力扣36. 有效的数独 解析代码 ⑤力扣37. 解数独 解析代码 ⑥力扣79. 单词搜索 解析代码 ⑦力扣1219. 黄金矿…

[嵌入式系统-58]:RT-Thread-内核:线程间通信,邮箱mailbox、消息队列MsgQueue、信号Signal

目录 线程间通信 1. 邮箱 1.1 邮箱的工作机制 1.2 邮箱控制块 1.3 邮箱的管理方式 &#xff08;1&#xff09;创建和删除邮箱 &#xff08;2&#xff09;初始化和脱离邮箱 &#xff08;3&#xff09;发送邮件 &#xff08;4&#xff09;等待方式发送邮件 &#xff08…

excel 和 text 文件的读写操作

excel 和 text 文件的读写操作 1. text 文件读写包 open语句 在文件存在的时候&#xff0c;即打开文件&#xff08;此时操作会覆盖文件&#xff0c;实际就是删除文件重后重新创建&#xff09;&#xff1b;在文件不存在的时候&#xff0c;即创建文件。 import sys print(sys.…

商务谈判技巧与口才书籍有哪些类型

商务谈判技巧与口才书籍有哪些类型&#xff08;3篇&#xff09; 商务谈判技巧与口才书籍的类型丰富多样&#xff0c;以下从三个角度进行介绍&#xff1a; **篇&#xff1a;基础理论与策略类书籍 这类书籍通常深入剖析谈判的本质&#xff0c;系统介绍谈判的原理、技巧和策略。…

S-Clustr+Nets3e 僵尸网络偷拍照片插件

项目地址:https://github.com/MartinxMax/S-Clustr-Ring 更新内容 本次将Nets3e(https://github.com/MartinxMax/Nets3e/tree/Nets3e_V1.1.4)插件成功嵌入,意味着你可以指定任意节点下的主机进行拍照 一些嵌入式设备与工业PLC设备与个人PC计算机回连控制 核心服务端搭建 最好…

MySQL-----多表查询(二)

目录 一.子查询概述&#xff1a; 二&#xff1a;标量子查询&#xff1a; 三&#xff1a;列子查询&#xff1a; 四&#xff1a;行子查询&#xff1a; 五&#xff1a;表子查询&#xff1a; 六&#xff1a;练习部分&#xff1a; 写在之前&#xff1a;本文承接上文MySQL-----多…

邦注科技 温控箱对企业的重要性

注塑加工是将加热的熔融塑料注入模具中形成所需产品的工艺过程。良好的注塑加工工艺需要控制好许多参数&#xff0c;其中最重要的因素之一就是模具的温度。模具温度的不稳定会导致产品尺寸大小、表面缺陷等方面的问题&#xff0c;甚至会导致生产不良品&#xff0c;加大生产成本…

普冉PY32系列(十五) PY32F0系列的低功耗模式

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

【深入浅出MySQL】「性能调优」高性能查询优化MySQL的SQL语句编写

高性能查询优化MySQL的SQL语句编写准则这里写目录标题 总体优化大纲&#xff08;1&#xff09;优化查询性能&#xff1a;通过索引降低全表扫描频率优化方向案例介绍问题分析解决方案建立复合索引建立单独索引 &#xff08;2&#xff09;优化数据表与查询&#xff1a;合理使用非…

数组的扩容与缩容

数组的扩容与缩容 文章目录 数组的扩容与缩容数组的扩容内存分析 数组的缩容内存分析内存分析 数组的扩容 数组扩容是指当原有数组的空间不足以容纳更多的元素时&#xff0c;创建一个新的、长度更大的数组&#xff0c;并将原数组中的元素复制到新数组中&#xff0c;然后更新原…

OpenFeign夺命9连问

今天介绍一款服务调用的组件&#xff1a;OpenFeign&#xff0c;同样是一款超越先辈&#xff08;Ribbon、Feign&#xff09;的狠角色。 文章目录如下&#xff1a; 这篇文章之前陈某发过&#xff0c;全网阅读 10W &#xff0c;时隔一年发出来让大家复习复习&#xff0c;部分读者…

LNMP部署及应用(Linux+Nginx+MySQL+PHP)

LNMP 我们为什么采用LNMP这种架构? 采用Linux、PHP、MySQL的优点我们不必多说。 Nginx是一个小巧而高效的Linux下的Web服务器软件&#xff0c;是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;已经在一些俄罗斯的大型网站上运行多年&#xff0c;目…

Spring - 10 ( 9000 字 Spring 入门级教程 )

一&#xff1a;MyBatis 进阶 动态 SQL 是 Mybatis 的强大特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 1.1 if 标签 在注册用户的时候&#xff0c;可能会有这样⼀个问题&#xff0c;如下图所示&#xff1a; 注册分为两种字段&#xff1a;必填字段和非必填字段&…