(11)QWidget的使用(two)

news2025/1/19 19:16:11

目录

设置窗口图标和标题

设置窗口图标以及获取图标

设置窗口标题以及获取标题

窗口标题的特殊操作

设置窗口的状态

设置窗口的不透明度

设置窗口的状态

使用封装好的函数显示窗口

设置窗口标志

窗口标志简介


设置窗口图标和标题

设置窗口图标以及获取图标

void setWindowIcon(const QIcon &icon)
QIcon windowIcon() const  
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);

	QWidget w;								//	创建窗口
	w.resize(640, 480);

	w.setWindowIcon(QIcon("icon.png"));		//	设置窗口图标(任务栏图标也会改变)
	QIcon icon = w.windowIcon();			//	获取窗口图标
	qInfo() << icon;

	w.show();								//	显示窗口
	
	return a.exec();
}

设置窗口标题以及获取标题

QString windowTitle() const
void setWindowTitle(const QString &)
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);

	QWidget w;								//	创建窗口
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");			//	设置窗口标题
	qInfo() << w.windowTitle();				//	获取窗口标题

	w.show();								//	显示窗口
	
	return a.exec();
}

窗口标题的特殊操作

        如果你想要在窗口标题后面显示,应用程序名称,可以使用下面的这个函数。(这个不算标题的一部分)

[static]void QGuiApplication::setApplicationDisplayName(const QString &name)
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);

	QWidget w;											//	创建窗口
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");						//	设置窗口标题
	QApplication::setApplicationDisplayName("软件名称");

	w.show();											//	显示窗口
	
	return a.exec();
}

         此属性保存窗口中显示的文档是否有未保存的更改。

void setWindowModified(bool)

使用此属性首先需要在窗口标题后面加上 [*]

int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);

	QWidget w;											//	创建窗口
	w.resize(640, 480);

	w.setWindowTitle("窗口标题[*]");						//	设置窗口标题
	QApplication::setApplicationDisplayName("软件名称");
	//显示*(窗口是否被修改)
	w.setWindowModified(true);

	auto btn = new QPushButton("保存", &w);
	QObject::connect(btn, &QPushButton::clicked, [&]()
		{
			w.setWindowModified(false);                 //  点击按钮保存
		});

	w.show();											//	显示窗口
	
	return a.exec();
}

   

设置窗口的状态

设置窗口的不透明度

void setWindowOpacity(qreal level)   // 设置窗口的不透明度(0-1)
qreal windowOpacity() const          // 获取窗口的不透明度
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);
	QWidget w;		
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");	//	设置窗口标题
	
	w.setWindowOpacity(0.5);		//	设置窗口的不透明度(透明 0-1 不透明)

	w.show();					
	return a.exec();
}

设置窗口的状态

Qt::WindowStates windowState() const
void setWindowState(Qt::WindowStates windowState)   
bool isActiveWindow()    	//是否为活跃窗口
枚举描述
Qt::WindowNoState无状态
Qt::WindowMinimized最小化
Qt::WindowMaximized最大化
Qt::WindowFullScreen全屏
Qt::WindowActive活动窗口
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);
	QWidget w;		
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");	//	设置窗口标题
	
	//获取窗口状态
	qInfo() << w.windowState();		//	WindowNoState
	w.setWindowState(Qt::WindowState::WindowMaximized);		// 设置窗口状态为最大化

	w.show();					
	return a.exec();
}

点击按钮能够在最大化和正常显示之间切换案例:

        如果窗口不可见(即isVisible()返回false),当show()被调用时窗口状态才生效。对于可见的窗口,会立即生效。例如,要在全屏模式和普通模式之间切换,使用以下代码:

w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);
	QWidget w;		
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");	//	设置窗口标题
	
	//点击按钮,窗口在正常显示与最大化之间切换
	auto btn = new QPushButton("切换", &w);

	QObject::connect(btn, &QPushButton::clicked, [&]()
		{
			// 使用按位异或的方式,如果窗口状态有最大化就去掉,没有就加上(相同为0,不同为1)
			w.setWindowState(w.windowState() ^ Qt::WindowState::WindowMaximized);
		});

	w.show();					
	return a.exec();
}

        为了恢复和激活最小化的窗口(同时保持其最大化和/或全屏状态),使用以下命令:

 w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);
	QWidget w;		
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");	//	设置窗口标题
	
	auto btn = new QPushButton("切换", &w);

	QObject::connect(btn, &QPushButton::clicked, [&]()
		{
			//点击之后不能切换到最大化状态,但是可以从最大化状态切换到正常状态
			w.setWindowState((w.windowState() & ~Qt::WindowState::WindowMaximized)
				| Qt::WindowActive);
		});

	w.show();					
	return a.exec();
}

使用封装好的函数显示窗口

void showFullScreen()
void showMaximized()
void showMinimized()
void showNormal()
    
bool isMaximized() const
bool isMinimized() const    
bool isFullScreen() const 
int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);
	QWidget w;		
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");	//	设置窗口标题
	w.showFullScreen();


	return a.exec();
}

设置窗口标志

窗口标志简介

        此枚举类型用于为小部件指定各种窗口系统属性。 它们相当不寻常,但在少数情况下是必要的。 其中一些标志取决于底层窗口管理器是否支持它们。

枚举值(十六进制)描述
Qt::Widget0x00000000这是QWidget的默认类型。 这种类型的控件如果有父控件,则为控件,如果没有父控件,则为独立窗口。
Qt::Window0x00000001指示小部件是一个窗口,通常带有窗口系统框架和标题栏,而不管小部件是否有父窗口。
Qt::Dialog0x00000002| Window指示小部件是一个窗口,应该装饰为一个对话框(即,通常在标题栏中没有最大化或最小化按钮)。
Qt::Sheet0x00000004| Window指示窗口是macOS上的工作表。 由于使用工作表意味着窗口模式,推荐的方法是使用QWidget::setWindowModality(),或QDialog::open()
Qt::DrawerSheet | Dialog指示小部件是macOS上的一个抽屉
Qt::Popup0x00000008| Window指示小部件是弹出式顶级窗口,即它是模态窗口,但具有适合于弹出式菜单的窗口系统框架。
Qt::ToolPopup | Dialog指示小部件是工具窗口。 工具窗口通常是一个小窗口,比通常的标题栏和装饰更小,通常用于工具按钮集合
Qt::ToolTipPopup | Sheet指示小部件是一个工具提示。 这在内部用于实现工具提示
Qt::SplashScreenToolTip | Dialog表示该窗口为启动画面。 这是QSplashScreen的默认类型
Qt::Desktop0x00000010| Window指示此小部件是桌面。 这是QDesktopWidget(此类已经过时)的类型
Qt::SubWindow0x00000012指示此小部件是子窗口,例如QMdiSubWindow小部件
Qt::ForeignWindow0x00000020| Window表示此窗口对象是一个句柄,表示由另一个进程或手动使用本机代码创建的本机平台窗口。
Qt::CoverWindow0x00000040| Window指示该窗口表示覆盖窗口,该窗口在某些平台上最小化应用程序时显示。

常用函数

//获取窗口标志
Qt::WindowFlags windowFlags() const
//设置窗口的某个标志是否生效
void setWindowFlag(Qt::WindowType flag, bool on = true)
//设置窗口标志
void setWindowFlags(Qt::WindowFlags type)
//设置小部件窗口标志,不通知系统(一般不使用这个函数)
void overrideWindowFlags(Qt::WindowFlags flags)
//判断是否为顶层窗口(没有父控件的窗口)
void isTopLevel() const

        窗口提示可以有多个(不一定会生效,看平台是否支持)

枚举值(十六进制)描述
Qt::FramelessWindowHint0x00000800窗口无边框
Qt::NoDropShadowWindowHint0x40000000去掉窗口阴影
Qt::CustomizeWindowHint0x02000000关闭默认的窗口标题提示
Qt::WindowTitleHint0x00001000给窗口一个标题栏
Qt::WindowSystemMenuHint0x00002000添加一个窗口系统菜单,可能还有一个关闭按钮(如在Mac上)。 如果你需要隐藏或显示关闭按钮,使用WindowCloseButtonHint便于移植。
Qt::WindowMinimizeButtonHint0x00004000激活最小化和关闭按钮,禁止最大化按钮
Qt::WindowMaximizeButtonHint0x00008000激活最大化和关闭按钮,禁止最小化按钮
Qt::WindowMinMaxButtonsHintWindowMinimizeButtonHint |WindowMaximizeButtonHint激活最小化,最大化和关闭按钮
Qt::WindowCloseButtonHint0x08000000添加一个关闭按钮
Qt::WindowContextHelpButtonHint0x00010000添加问号和关闭按钮,同对话框
Qt::WindowStaysOnTopHint0x00040000窗口顶置
Qt::WindowStaysOnBottomHint0x04000000窗口底置

去掉窗口边框的示例

int main(int argc, char* argv[]) 
{
	QApplication a(argc, argv);
	QWidget w;		
	w.resize(640, 480);

	w.setWindowTitle("窗口标题");	//	设置窗口标题
	
	w.setWindowFlags(w.windowFlags() | Qt::WindowType::FramelessWindowHint);

	w.show();
	return a.exec();
}

注:修改之后需要重新show()一下窗口 

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

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

相关文章

Java在远程方法调用中运用反射机制

本案例将介绍反射机制在网络编程中的应用&#xff0c;实现如何在客户端通过远程方法调用服务器端的方法。 假定在服务器端有一个 HelloService 接口&#xff0c;该接口具有 getTime() 和 echo() 方法&#xff0c;具体代码如下&#xff1a; import java.util.Date; public int…

【C语言航路】第十一站:字符串、字符和内存函数

目录 一、字符串函数 1.strlen &#xff08;1&#xff09;strlen的库函数文档 &#xff08;2&#xff09;strlen的模拟实现 &#xff08;3&#xff09;strlen的注意事项 2.strcpy &#xff08;1&#xff09;strcpy的库函数文档 &#xff08;2&#xff09;strcpy的使用以…

如何使用机器学习进行图像识别|数据标注

什么是图像识别&#xff1f;图像识别是一种用于识别图像中的对象并将其分类为特定类别的机制&#xff0c;基于人类识别不同图像集中对象的方式。图像识别如何为人类工作&#xff1f;当我们看到一个物体或图像时&#xff0c;作为人类&#xff0c;我们能够立即准确地知道它是什么…

浅谈STL——适配器

一、适配器&#xff08;Adapters&#xff09; 它是一种设计模式&#xff0c;为STL中能够将一个类的接口转化为用户更加想要使用的接口&#xff0c;适配器就扮演者轴承、转换器的功能 就是一个wrapper的模式&#xff0c;将要修饰的接口进行二次包装&#xff0c;展露出可以更容…

紧急事故的流程管理

嵌套式职责分离 在事故处理中&#xff0c;让&#xff1a;每个人清楚自己的职责是非常重要的。有点反直觉的是&#xff0c;明嘶职费反而能够使每个人可以更独立自主地解决问题&#xff0c;因为他们不用怀疑和担心他们的同事都在干什么。 如果一个人目前要处理的事情大多了&…

[TPAMI 2022] 用深度神经网络解决欠定问题——考虑鲁棒性?

Solving Inverse Problems With Deep Neural Networks – Robustness Included?https://ieeexplore.ieee.org/abstract/document/9705105摘要在过去的五年中&#xff0c;深度学习方法已经成为解决各种反问题的最先进方法。在此类方法可以应用于安全关键领域之前&#xff0c;必…

2022年度总结和展望2023年

文章目录 前言 2022年的成就总结 2023年的行动目标 如何完成这些目标&#xff1f; 前言 从2018年更新CSDN第一篇的博文&#xff0c;我就和CSDN产生联系。当时想法很纯粹&#xff0c;就是将积累的知识写成文章&#xff0c;无论去到哪里都能查到&#xff0c;所以前面三年都是…

Python实现预测客户是否会购买房车险源码+数据集,基于伯努利朴素贝叶斯预测客户购买房车险源码,Python预测客户购买房车险

伯努利朴素贝叶斯预测客户购买房车险 根据2000年数据挑战赛保险公司的客户特征数据&#xff0c;预测客户是否会购买房车险。 使用伯努利朴素贝叶斯模型&#xff0c;我获得了更好的预测效果 完整代码下载地址&#xff1a;Python实现预测客户是否会购买房车险源码数据集 数据集…

中国化工发展的新态势

顺势而为的企业才可能有好的未来&#xff0c;在一年之初&#xff0c;回顾总结一下中国化工行业的发展态势&#xff0c;对企业认清形势&#xff0c;确定企业的行业发展方向和发展战略至关重要。 自2022年以来&#xff0c;中国快速增长的化工行业按收入计算一直是世界上最大的&am…

【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)

文章目录需求解决方案什么是Redis GeoHashJava实现InitEquLongLatTask.javaControllerservicexml sql语句引用的pom依赖需求 通过百度地图的覆盖物功能&#xff0c;用户在页面上画圈选定某个区域&#xff0c;前端传输中心点经纬度与半径给后端&#xff0c;后端需要返回位置在圈…

表格存储 Tablestore 十年发展总结

作者&#xff1a;周赵锋 阿里云基础产品团队 ​表格存储Tablestore上线已有十年&#xff0c;随着业务规模变大&#xff0c;稳定性挑战也随之而来&#xff0c;需要不断优化架构来提升可用性。本文将为大家分享表格存储Tablestore在技术层面近年来的功能演进、技术架构演进以及稳…

与哈希函数有关的结构:布隆过滤器、一致性哈希

1、认识哈希函数 &#xff08;out f(in data)&#xff09; 输入参数in&#xff0c;其值域范围可以看作是无穷大的。输出函数out&#xff0c;其值域范围可能性很大&#xff0c;但是一定是有穷尽的哈希函数没有任何随机的机制&#xff0c;固定的输入一定是固定的输出输入无穷多但…

计算机基础——无处不网络

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.计算机网络概述 1.计算机网络发展史 二.计算机网络应用领域 三.计算机网…

基于YOLOv6m的接打电话检测识别分析系统

本身在实际项目开发应用中YOLO都是目标检测任务的绝对主力&#xff0c;从v3一直跟着到了v7&#xff0c;做了很多的项目&#xff0c;处理了很多的数据&#xff0c;当然了也积累了一些自己的成果和心得&#xff0c;这里主要是以不常用到的yolov6m系列的模型来开发构建接打电话行为…

python基础篇之函数

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a;lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

最简最速搭建grpc分布式服务的Mac系统开发环境

文章目录环境详情基本原理什么是 Protobuf工具安装环境搭建编写服务类的实现启动服务客户端测试环境详情 golang 1.18 macOS Big Sur protobuf 3 基本原理 整个RPC过程就是&#xff1a; 客户端 发送 数据&#xff08;以字节流的方式&#xff09;服务端接收&#xff0c;并…

Spring Boot 大型线上商城项目实战教程试学(文末视频版)

视频链接在文末 在学习一门技术的时候&#xff0c;相信很多开发者会在开源网站上寻找对应技术栈的开源项目&#xff0c;通过阅读源码&#xff0c;学习项目作者的开发思路、解决问题的方法&#xff0c;这一过程&#xff0c;对大多人来说没那么容易&#xff0c;要么一开始不知从…

共享模型之管程(八)

1.线程的活跃性 1>.定义: 线程内的有限代码因为某种原因一直无法执行完毕(/执行不完); 1.1.线程活跃性的现象-死锁 1>.有这样的情况&#xff1a;一个线程需要同时获取多把锁,这时就容易发生死锁; 2>.案例 ①.t1线程已经获得A对象锁,接下来想获取B对象的锁; ②.t2线…

Python和MySQL对比(4):用Pandas 实现MySQL的行列转换语法效果

文章目录一、前言二、语法对比数据表concat&#xff08;多列合并为一列&#xff09;group_concat&#xff08;多行合并为一行&#xff09;一列拆分为多列一行拆分为多行多行转为多列多列转为多行三、小结一、前言 环境&#xff1a; windows11 64位 Python3.9 MySQL8 pandas1.4.…

【Linux】make/Makefile的简单使用

人生的态度是&#xff0c;抱最大的希望&#xff0c;尽最大的努力&#xff0c;做最坏的打算。 – 柏拉图 《理想国》 目录一.Linux项目自动化构建工具-make/Makefile1.为什么需要使用make/Makefile2.简单理解make和Makefile3.如何编写Makefile文件3.1生成可执行程序&#xff1a…