Qt QWidget窗口基类

文章目录

  • 1 QWidget介绍
  • 2 如何显示 QWidget窗口
    • 2.1 新建基于QWidget的窗口类
    • 2.2 再添加一个QWidget窗口类
    • 2.3 显示新添加的 QWidget窗口
  • 3 常用的属性和方法
    • 3.1 窗口位置
    • 3.2 窗口大小
    • 3.3 窗口标题
    • 3.4 窗口图标
    • 3.5 资源文件
  • 4 实例

1 QWidget介绍

Qt 中的常用控件,比如按钮、文本框、下拉框、树形控件等都是控件,QWidget类是所有控件类的父类。

  • 所有窗口类的基类
    • Qt中有3个窗口的基类:QWidgetQMainWindowQDialog
    • 其中,QMainWindowQDialog都是继承自QWidge
  • 所有控件类的基类
    • Qt中的控件类(按钮、输入框、单选框等)也属于窗口类
    • 它们的基类也是QWidget
  • 可以内嵌到其他窗口的内部,此时需要给其指定父窗口
  • 可以作为独立的窗口显示,此时不能给其指定父窗口

2 如何显示 QWidget窗口

零新建一个基于QWidget的主窗口,并且再添加一个基于QWidget的窗口

2.1 新建基于QWidget的窗口类

新建一个工程Demo,只是这里让主窗口继承自QWidget

在这里插入图片描述

2.2 再添加一个QWidget窗口类

首先,右键单击【Demo】,点击【添加新文件…】

在这里插入图片描述

选择【Qt】->【Qt设计师界面类】

在这里插入图片描述

选择【Widget】,然后下一步

在这里插入图片描述

输入类名,然后点击下一步

在这里插入图片描述

2.3 显示新添加的 QWidget窗口

为了便于显示,打开subwidget.ui设计师界面,拖放一个按钮,如下:

在这里插入图片描述

然后来到widget.cpp文件中,添加如下代码,来显示SubWidget窗口:

// 在widget.cpp文件中

// 未指定父窗口, 这个窗口就是独立的窗口
// 需要调用其show方法 来将其显示
SubWidget *subWidget = new SubWidget();
subWidget->setWindowTitle("SubWidget");
subWidget->show();

如果指定了父窗口, 这个窗口就是内嵌窗口
就不需要调用其show方法 因为其父窗口显示时,会自动显示子窗口
SubWidget *subWidget = new SubWidget(this);
subWidget->setWindowTitle("SubWidget");

3 常用的属性和方法

可以去开始菜单栏寻找帮助文档

在这里插入图片描述

切换到索引,输入QWidget ,就可以查看QWidget的详细帮助文档

在这里插入图片描述

3.1 窗口位置

// 1. 设置窗体的几何信息 
// 获取相对于当前窗口父窗口的几何信息,宽高,坐标点信息 
const QRect &geometry() const;
void setGetmetry(int x, int y, int w, int h);
void setGetmetry(const QRect &);

// 2. 移动窗口
// 重新设置窗口的位置  
void move(int x, int y);
void move(const QPoint &);

3.2 窗口大小

通常,窗口可以拖动其右下角,进行放大和缩小。我们可以设置窗口的最小大小和最大大小。

另外,窗口可以设置为固定大小,这样窗口就不能放大和缩小。

常用的设置大小的函数如下:

// 1. 设置窗口尺寸
QSize size() const;
void resize(int w, int h);
void resize(const QSize &);

// 2. 设置最大尺寸
QSize maximunSize() const;
void setMaximumSize(const QSize &);
void setMaximumSize(int maxw, int maxh);

// 3. 设置最小尺寸
QSize minimumSize() const;
void setMinimumSize(const QSize &);
void setMinimumSize(int w, int h);

// 4. 设置固定尺寸
void setFixedSize(const QSize &);
void setFixedSize(int w, int h);

// 5. 单独设置窗口的高度
int height() const;
int minimumHeight() const;
int maximumHeight() const;

void setFixedHeight(int h);
void setMaximumHeight(int maxh);
void setMinimumHeight(int minh);

// 6. 单独设置窗口的宽度
int width() const;
int minimumWidth() const;
int maximumWidth() const;

void setFixedWidth(int w);
void setMaximumWidth(int maxw);
void setMinimumWidth(int minw);

3.3 窗口标题

设置和获取窗口的标题,直接使用如下两个函数即可:

// 获取和设置窗口的标题
QString windowsTitle() const;
void setWindowTitle(const QString &);

3.4 窗口图标

设置窗口的图标,需要一个Qlcon对象,如下:

// 获取和设置窗口的图标
QIcon windowIcon() const;
void setWindowIcon(const QIcon &);

// 构造 QIcon图标对象
// 有6个重载的构造的方法,通常我们使用最后一个
QIcon::QIcon(const QString &fileName);

3.5 资源文件

首先将图标文件pages.ico,复制到项目目录Demo下的目录中,如下:

在这里插入图片描述

选择QtResourceFile,这样就会在项目中,添加一个.qrc的文件

在这里插入图片描述

资源文件命名为res

在这里插入图片描述

接下来打开“资源文件编辑器”, 注意:如果没有打开,直接右键res.qrc,然后选择“OpeninEditor”即可

如下:

在这里插入图片描述

然后,点击添加前缀,

再点击“添加文件",定位到拷贝到项目目录下的图标文件pages.ico,最终效果如下:

在这里插入图片描述

接下来就可以拷贝这个pages.ico的资源路径,在程序中使用了

在这里插入图片描述

4 实例

来演示QWidget中常用的方法

主要代码

void Widget::on_btnGetSize_clicked() {
    qDebug() << "------------------------\n";
    QRect rect = this->geometry();
    qDebug() << "左上:" << rect.topLeft() << "\n右上" << rect.topRight()
             << "\n左下" << rect.bottomLeft() << "\n右下" << rect.bottomRight()
             << "\n宽" << rect.width() << "\n高" << rect.height();
}

void Widget::on_btnSetSize_clicked() {
    this->resize(400, 400);
}

void Widget::on_btnSetFixedSize_clicked() {
    this->setFixedSize(500, 500);
}

void Widget::on_btnSetMinSize_clicked() {
    this->setMinimumSize(300, 300);
}

void Widget::on_btnSetMaxSize_clicked() {
    this->setMaximumSize(600, 600);
}

void Widget::on_btnMove_clicked() {
    this->move(100, 100);
}

void Widget::on_btnSetTitle_clicked() {
    this->setWindowTitle("修改后的标题");
}

void Widget::on_btnSetIcon_clicked() {
    this->setWindowIcon(QIcon(":/res/pages.ico"));
}


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

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

相关文章

flex弹性盒子常用的布局属性详解

想必大家在开发中经常会用到flex布局。而且还会经常用到 justify-content 属性实现分栏等等 接下来给大家分别讲一下 justify-content 的属性值。 以下是我敲的效果图大家可以清晰看出区别 space-between 属性值可以就是说两端对齐 space-evenly 属性值是每个盒子之间的…

觉得伺服方案比较难开发的可以看过来

参数 TMCM-1690是单轴FOC伺服电机控制模块集成预驱适合三相BLDC/PMSM和DC有刷伺服电机&#xff0c;带有高达1.5A栅极驱动电流和60V(48 V nominal)供电提供了UART(RS232-/RS485ready),CAN 和 EtherCAT 通讯接口支持TML,CANopen,或 CANopen-over-EtherCAT通讯协议TMCM-1690 支持增…

[足式机器人]Part2 Dr. CAN学习笔记 - Ch03 傅里叶级数与变换

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Ch03 傅里叶级数与变换 1. 三角函数的正交性2. 周期为 2 π 2\pi 2π的函数展开为傅里叶级数3. 周期为 2 L 2L 2L的函数展开4. 傅里叶级数的复数形式5. 从傅里叶级数推导傅里叶变换FT6. 总结 1. …

【控制篇 / 策略】(7.4) ❀ 01. IP地理位置数据库和地理地址对象 ❀ FortiGate 防火墙

【简介】在很多使用环境下&#xff0c;我们需要对指定国家的IP地址进行允许或禁止访问操作&#xff0c;例如只允许访问国内IP。以前只能手动添加IP地址对象到地址组&#xff0c;繁杂且效率低下&#xff0c;Fortinet提供了基于地理位置的IP库&#xff0c;就可以解决这个问题。 I…

手把手教你学会接口自动化系列一-浅浅地尝试编写登录接口的自动化代码

老痞既然要带你学会接口自动化,那么老痞肯定是要把你当做0基础,从最基本的开始写起,一步步写到最后。 我最先打开项目。 第一步就是需要登录,所以这个时候,我们查看下登录的接口,我抓到接口如下: 第一个就是登录的接口,接口的地址为: http://192.168.0.134:8081/log…

【PostgreSQL创建索引的锁分析和使用注意】

1.1 创建普通B-tree索引的整体流程 如下是梳理的创建普通B-tree索引的大概流程&#xff0c;可供参考。 1.校验新索引的Catalog元数据|语法解析 ---将创建索引的sql解析成IndexStmt结构&#xff5c;校验B-Tree的handler -----校验内核是否支持该类型的索引,在pg_am中查找&q…

2024年游泳耳机十大品牌排行榜,游泳耳机哪个牌子好

游泳耳机市场正呈现蓬勃发展的趋势&#xff0c;而在众多品牌中选择一款适合自己的游泳耳机变得愈发重要。游泳不仅是锻炼身体的有效方式&#xff0c;还是缓解压力的良好途径。然而&#xff0c;游泳时的单调可能成为一些人的困扰&#xff0c;特别是那些希望在运动中欣赏音乐或聆…

二叉树的层序遍历经典问题(算法村第六关白银挑战)

基本的层序遍历与变换 二叉树的层序遍历 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入…

25 心形按钮

效果演示 实现了一个心形的心形图案&#xff0c;当用户点击图案时&#xff0c;图案会旋转并缩小&#xff0c;同时背景颜色会变成白色。 Code <div class"love"><input id"switch" type"checkbox"><label class"love-heart&…

*5.1 Global Memory Bandwidth

并行程序的执行速度可能因计算硬件的资源限制而有很大差异。虽然管理并行代码和硬件资源约束之间的交互对于在几乎所有并行编程模型中实现高性能很重要&#xff0c;但这是一种实用技能&#xff0c;最好通过为高性能设计的并行编程模型中的实践练习来学习。在本章中&#xff0c;…

xss-labs(1-5)

环境准备: 靶场下载:下载仓库 zhangmanhui/xss-labs - Gitee.com 启动phpStudy 搭建将文件解压拉到phpStudy的www目录下就行 最后直接访问:127.0.0.1/xss-labs-master/ 最后再准备一个浏览器的插件用来发送请求:HackBar 插件都配置好了,直接加载到你的浏览器的扩展…

以unity技术开发视角对android权限的讲解

目录 前言 Android权限分类 普通权限 普通权限定义 普通权限有哪些 危险权限 危险权限的定义 危险权限有哪些 动态申请权限实例 申请单个权限实例 第一步&#xff1a;在清单文件中声明权限 第二步&#xff1a;在代码中进行动态申请权限 申请多个权限实例 第一步&am…

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…

希尔顿花园酒店喜迎入华十周年里程碑

【2024年1月8日&#xff0c;中国&#xff0c;上海】作为希尔顿集团旗下标志性高端精选服务酒店品牌&#xff0c;希尔顿花园酒店于今年正式迎来其在华经营十周年的里程碑。自2014年中国首家希尔顿花园酒店在深圳开业以来&#xff0c;中国市场已经成为希尔顿花园酒店全球增长的重…

C++中的返回值优化(RVO)

一、命名返回值优化&#xff08;NRVO&#xff09; 是Visual C2005及之后版本支持的优化。 具体来说&#xff0c;就是一个函数的返回值如果是一个对象。那么&#xff0c;正常的返回语句的执行过程是&#xff0c;把这个对象从当前函数的局部作用域&#xff0c;或者叫当前函数的…

2024第15届电子教育、电子商务、电子管理和电子学习国际会议

第十五届电子教育、电子商务、电子管理和电子学习国际会议&#xff08;IC4E 2024&#xff09;将于2024年3月18日-21日在日本福冈举办。本次会议以电子技术为核心&#xff0c;围绕电子教育、电子商务、电子管理以及电子学习等各个方面展开研讨&#xff0c;为相关领域的专家学者们…

【Spring 篇】深入浅出:用Spring注解开发的奇妙之旅

在编程的世界里&#xff0c;Spring框架如同一位慈祥的导师&#xff0c;为我们打开了无尽可能性的大门。而在Spring的广袤领域中&#xff0c;注解是我们最亲密的伙伴之一。本篇博客将深入浅出地介绍使用Spring注解进行开发的奇妙之旅&#xff0c;为你解开注解的神秘面纱。 前奏…

2024年远控软件年度盘点:安全、稳定、功能之选

这目录 前言2024年热门远控软件ToDesk向日葵TeamViewerAnyDeskSplashtopAirDroidChrome Remote DesktopMicrosoft远程桌面RayLinkParallels Access 远程控制软件如何选择&#xff1f;1、功能性2、安全性3、易用性4、稳定性 未来展望与建议结语 前言 随着信息技术不断发展&…

使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架

使用命令行方式搭建uni-app Vue3 Typescript Pinia Vite Tailwind CSS uv-ui开发脚手架 项目代码以上传至码云&#xff0c;项目地址&#xff1a;https://gitee.com/breezefaith/uniapp-vue3-ts-scaffold 文章目录 使用命令行方式搭建uni-app Vue3 Typescript Pinia V…

移动端对大批量图片加载的优化方法(一)

移动端对大批量图片加载的优化方法&#xff08;一&#xff09;iOS 本篇主要从iOS开发中可以使用到的对大批量图片加载的优化方法进行整理。 1.异步加载 将图片加载任务放在后台线程中进行&#xff0c;避免阻塞主线程&#xff0c;这样可以保证应用的响应性和流畅性&#xff1…