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

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

相关文章

什么是CDN,优势在哪里

随着互联网的普及和用户需求的多样化&#xff0c;网站的速度和稳定性已经成为影响用户体验的关键因素。CDN加速作为解决这一问题的有效手段&#xff0c;正逐渐受到业界的广泛关注。 为什么说对网站这一块起到这么关键性的作用呢&#xff1f;它的优势在哪&#xff1f; 1.提升网…

【机器学习】卷积神经网络(五)-计算机视觉应用

七、应用-计算机视觉 7.1 人脸检测 DenseBox\Femaleness-Net\MT-CNN\Cascade CNN 介绍 VJ框架的分类器级联用于卷积网络 用于人脸检测的紧凑卷积神经网络级联 问题&#xff1a;作者希望实时检测高分辨率视频流中的正面&#xff0c;由于人脸图像和背景的多样性和复杂性&#xff…

【MIdjourney】图像角度关键词

本篇仅是我个人在使用过程中的一些经验之谈&#xff0c;不代表一定是对的&#xff0c;如有任何问题欢迎在评论区指正&#xff0c;如有补充也欢迎在评论区留言。 1.侧面视角(from side) 侧面视角观察或拍摄的主体通常以其侧面的特征为主要焦点&#xff0c;以便更好地展示其轮廓…

02. Eureka、Nacos注册中心及负载均衡原理

01小节中订单服务远程调用用户服务案例实现了跨服务请求&#xff0c;在微服务中一个服务可能是集群部署的&#xff0c;也就是一个服务有多个实例&#xff0c;但是我们在调用服务时需要指定具体的服务实例才能调用该服务&#xff0c;在集群模式下&#xff0c;服务地址应该写哪个…

1.3号io网络

文件IO 1.文件IO是基于系统调用 2.程序每进行一次系统调用&#xff0c;就会从用户空间向内核空间进行一次切换&#xff0c;执行效率较慢 3.目的&#xff1a;由于后期进程间通信&#xff0c;如管道、套接字通信&#xff0c;都使用的是文件IO&#xff0c;所以引入文件IO操作的…

MATLAB根据数据拟合曲线

MATLAB根据数据拟合曲线 MATLAB根据数据拟合曲线视频观看 MATLAB根据数据拟合曲线 x1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,6…

C语言之详解数组【附三子棋和扫雷游戏实战】

文章目录 一、一维数组的创建和初始化1、数组的创建2、数组的初始化3、一维数组的使用4、 一维数组在内存中的存储 二、二维数组的创建和初始化1、二维数组的创建2、二维数组的初始化3、二维数组的使用4、二维数组在内存中的存储 三、数组越界边界值考虑不当导致越界访问数组大…

Mysql数据库的基础操作

1、数据库的数据类型和结构设置&#xff0c;修改等 DML&#xff1a;针对数据的增删改 where条件更像是这一条命令中的限制条件&#xff0c;如果不带where条件的时候&#xff0c;相当于针对全表所有字段进行操作 DQL&#xff1b; 数据查询语言 1、查询关键词使用 select 这个里…

MYSQL学习之buffer pool的理论学习

MYSQL学习之buffer pool的理论学习 by 小乌龟 文章目录 MYSQL学习之buffer pool的理论学习前言一、buffer pool是什么&#xff1f;二、buffer pool 的内存结构三、buffer pool 的初始化和配置初始化配置 四、buffer pool 空间管理LRU淘汰法冷热数据分离的LRU算法1.引入库2.读入…

MacBook Pro M1搭建Kafka2.7版本源码运行环境

原创/朱季谦 最近在阅读Kafka的源码&#xff0c;想可以在阅读过程当中&#xff0c;在代码写一些注释&#xff0c;便决定将源码部署到本地运行。 日常开发过程中&#xff0c;用得比较多一个版本是Kafka2.7版本&#xff0c;故而在MacBook Pro笔记本上用这个版本的源码进行搭建&…

计算机网络实验(二):Wireshark网络协议分析

一、实验名称&#xff1a;Wireshark网络协议分析 二、实验原理 HTTP协议分析 1.超文本传输协议&#xff08;Hypertext Transfer Protocol, HTTP&#xff09;是万维网&#xff08;World Wide Web&#xff09;的传输机制&#xff0c;允许浏览器通过连接Web服务器浏览网页。目…

高性能、可扩展、支持二次开发的企业电子招标采购系统源码

在数字化时代&#xff0c;企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台&#xff0c;涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等…

2023我的编程之旅、2024新的启程

目录 一、2023年结束、2024年开始 1、回顾2023年 1.1、发表文章概述 1.2、开发中遇到的问题与解决方案 2、展望2024年 2.1、新年Flag 2.2、收获与成长 一、2023年结束、2024年开始 光阴荏苒&#xff0c;从我开始在CSDN写作已经2年零5个月了&#xff0c;我也在不断的思考…

关于使用统一服务器,vscode和网页版jupyter notebook的交互问题

autodl 查看虚拟环境 在antodl上租借了一个服务器&#xff0c;通过在网页上运行jupyter notebook和在vscode中运行&#xff0c;发现环境都默认的是miniconda3。 conda info --envs 当然环境中所有的包都是一样的。 要查看当前虚拟环境中安装的所有包&#xff0c;可以使用以…

在CentOS 7.6上配置HTTP隧道代理

是一个相对复杂的过程&#xff0c;涉及到多个步骤。以下是一个详细的步骤指南&#xff0c;供您参考&#xff1a; 1. 安装必要的软件包 首先&#xff0c;您需要安装一些必要的软件包。打开终端&#xff0c;并执行以下命令&#xff1a; bash复制代码 sudo yum install -y epel…

Linux内核--网络协议栈(一)Socket通信原理和实例讲解

目录 一、引言 二、Socket ------>2.1、socket编程 ------>2.2、Socket的创建 三、收发数据 四、断开连接 五、删除套接字 六、网络 IO 一、引言 本章开始进入linux内核中网络部分的学习,先简单介绍一下socket套接字 二、Socket 一个数据包经由应用程序产生…

2024年如何借用电商新零售破局?新型商业模式——乐享甄选竞拍模式

2024年如何借用电商新零售破局&#xff1f;新型商业模式——乐享甄选竞拍模式 背景&#xff1a;经历疫情三年的黑天鹅&#xff0c;消费者对未来收入预期和不自信等悲观情绪&#xff0c;从而使得“勒紧腰带&#xff0c;少消费&#xff0c;不消费”&#xff0c;以简单实用成为了新…

DRF-源码解析-4-限流的流程:drf的限流源码,drf流量控制流程,drf如何流量控制

流量控制的逻辑&#xff1a; 1、设置一个唯一标识&#xff0c;作为cache的key 2、请求访问时&#xff0c;构造唯一标识&#xff0c;从ceche中获取[时间1,时间2,时间3,…] 3、根据设置流量控制规则&#xff0c;如&#xff1a;5/m (一分钟最多访问5次)&#xff0c;判断该唯一标…

基于ssm的常见小儿疾病中医护理系统的设计+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本小儿疾病中医护理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

湖南大学-计算机网路-2023期末考试【部分原题回忆】

前言 计算机网络第一门考&#xff0c;而且没考好&#xff0c;回忆起来的原题不多。 这门学科学的最认真&#xff0c;复习的最久&#xff0c;考的最差。 教材使用这本书&#xff1a; 简答题&#xff08;6*530分&#xff09; MTU和MSS分别是什么&#xff0c;联系是什么&#x…