[qt5学习笔记]Application Example示例程序源码解析

开发环境问题

vs2022下直接打开ui、ts文件失败

解决办法如下图,
设置designer独立运行。估计是嵌入运行存在些许bug。
同理,ts编辑工具linguist也存在这个问题。
qrc rc的编辑嵌入编辑都正常,但分离式更稳定可靠。
在这里插入图片描述

qt creator编译失败

原因是qt creator自己设置的默认编译环境路径错误,修改c++编译器所在路径。
在这里插入图片描述

界面元素的两种创建方式

在qt designer中编辑ui文件

在这里插入图片描述
我觉得,在qt designer中编辑ui文件,唯一优点就是比较直观。
缺点较多,设置起来比较麻烦。效率较低,代码方式可以拷贝粘贴。界面对象指针都存储在Ui::QtWidgetsApplication1Class ui_;中。

在MainWindow的构造函数中new ui元素

这是qt自带Application Example示例代码的方式,此示例工程就没有ui文件。
在这里插入图片描述
之所以还保留qrc文件,我觉得是为了将所有png单文件合并为一个资源文件,显示时直接访问程序内部的资源图像内存块,避免了图像加载过程,使得界面显示更流畅。

示例代码中没有管理new出来的ui对象内存
例如:QMenu *fileMenu = menuBar()->addMenu(tr(“&File”));
原因是这些界面对象指针都会被挂在qApp这个内存树上,app关闭时会自动释放。
如果其它函数中途需要用到这些ui对象,可以放在class MainWindow中集中存储。

qml

connect 信号和槽

connect 一般有4个参数,分为两组:
前面两个分别是信号发送者和信号类型,
后面两个是信号接收者和负责响应的槽函数。
例如:

	connect(ui_.plainTextEdit->document(), &QTextDocument::contentsChanged,this, &MainWindow::documentWasModified);#ifndef QT_NO_SESSIONMANAGER //系统关闭时,会触发qApp的commitDataRequest信号QGuiApplication::setFallbackSessionManagementEnabled(false);connect(qApp, &QGuiApplication::commitDataRequest,this, &MainWindow::commitData);
#endif

connect原型如下,

    //Connect a signal to a pointer to qobject member functiontemplate <typename Func1, typename Func2>static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot,Qt::ConnectionType type = Qt::AutoConnection)enum ConnectionType {AutoConnection,DirectConnection,QueuedConnection,BlockingQueuedConnection,UniqueConnection =  0x80};

AutoConnection:默认选择,适合大多数场景。

DirectConnection:直接调用,适合单线程。

QueuedConnection:跨线程调用,适合多线程。

BlockingQueuedConnection:跨线程同步调用,适合需要同步的场景。

UniqueConnection:确保连接唯一,避免重复连接。

QSettings保存运行信息

在下一次启动时可以查询复用上一次的运行信息。

	QCoreApplication::setOrganizationName("QtProject");void MainWindow::writeSettings()
{QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName());settings.setValue("geometry", saveGeometry());
}void MainWindow::readSettings()
{QSettings settings(QCoreApplication::organizationName(),QCoreApplication::applicationName());const QByteArray geometry = settings.value("geometry", QByteArray()).toByteArray();if (geometry.isEmpty()) {const QRect availableGeometry = screen()->availableGeometry();resize(availableGeometry.width() / 3, availableGeometry.height() / 2);move((availableGeometry.width() - width()) / 2,(availableGeometry.height() - height()) / 2);}else {restoreGeometry(geometry);}
}

如果涉及多个显示屏(下一次启动也可能没有之前的显示器),情况会复杂一些。

QCommandLineParser 支持命令行

ui程序支持命令行的话,可以像linux命令一样将一组ui程序串成脚本运行(此时代码需要控制跳过界面显示),需要时再启动ui显示。

	QCommandLineParser parser;parser.setApplicationDescription(QCoreApplication::applicationName());parser.addHelpOption();parser.addVersionOption();parser.addPositionalArgument("file", "The file to open.");parser.process(app);if (!parser.positionalArguments().isEmpty())//支持命令行打开文件mainWin.loadFile(parser.positionalArguments().first());

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

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

相关文章

Jetson Agx Orin平台JP6.0-r36.3版本修复了vi模式下的原始图像损坏(线条伪影)

1.问题描述 这是JP-6.0 GA/ l4t-r36.3.0的一个已知问题 通过vi模式捕获的图像会导致异常线条 参考下面的快照来演示这些线伪影 这个问题只能通过VI模式进行修复,不应该通过LibArgus看到。 此外,这是由于内存问题。 由于upstream已经将属性名称更改为“dma-noncoherent”…

[创业之路-299]:图解金融体系结构

一、金融体系结构 1.1 概述 金融体系结构是一个国家以行政的、法律的形式和运用经济规律确定的金融系统结构&#xff0c;以及构成这个系统的各种类型的银行和非银行金融机构的职能作用和相互关系。以下是对金融体系结构的详细分析&#xff1a; 1、金融体系的构成要素 现代金…

0基础学LabVIEW

对于零基础的朋友来说&#xff0c;学习LabVIEW需要一个科学的学习路径和方法。通过观看优质的B站教程打好基础&#xff0c;再结合实际项目进行实践操作&#xff0c;能够快速提升LabVIEW的应用能力。以下是从入门到进阶的学习建议。 ​ 一、利用B站入门教程打基础 筛选优质教程…

Query String 传递 json 对象参数、map参数

?params[name]John&params[age]30&params[isStudent]true params[name] 和 params[age] 中的 [] 是非法字符。 服务器&#xff08;Apache Tomcat&#xff09;默认不允许在 URL 中使用 []。 对 [] 进行 URL 编码 将 [] 编码为 %5B 和 %5D。 示例&#xff1a; ?pa…

腿足机器人之六- 前向运动学

腿足机器人之六- 前向运动学 刚体运动学基础坐标系定义旋转矩阵与欧拉角齐次变换矩阵&#xff08;平移旋转的统一表示&#xff09; 运动链建模串联运动链结构&#xff08;从基座到末端的关节连接&#xff09;标准Denavit-Hartenberg&#xff08;D-H&#xff09;参数法改进D-H参…

正则表达式(Regular expresssion)

正则表达式 匹配单次 . &#xff1a;匹配任意一个字符 [ ] &#xff1a;匹配[ ]里举例的任意一个字符 /d &#xff1a;匹配数字0-9 /D &#xff1a;匹配非数字 /s &#xff1a;匹配空白或tab建 /S &#xff1a;匹配非空白 /w &#xff1a;…

DarkLabel 2.4使用指南:高效标注视频数据目标检测标签

工具概述 DarkLabel 2.4 是一款强大的多功能标注工具&#xff0c;专为计算机视觉开发者设计&#xff0c;旨在提升标注工作的效率和精确度。其智能标注引擎支持两项核心功能&#xff1a;线性插值标注与多目标跟踪&#xff0c;极大地优化了视频标注过程。 &#xff08;1&#x…

rabbitmq五种模式的总结——附java-se实现(详细)

rabbitmq五种模式的总结 完整项目地址&#xff1a;https://github.com/9lucifer/rabbitmq4j-learning 一、简单模式 &#xff08;一&#xff09;简单模式概述 RabbitMQ 的简单模式是最基础的消息队列模式&#xff0c;包含以下两个角色&#xff1a; 生产者&#xff1a;负责发…

网页制作01-html,css,javascript初认识のhtml的基本标记

一、 Html简介 英文全称是 hyper text markup language,超文本标记语言,是全球广域网上描述网页内容和外观的标准. Html作为一款标记语言,本身不能显示在浏览器中.标记语言经过浏览器的解释和编译,才能正确地反映html标记语言的内容. 1.html 的基本标记 1&#xff09;头部标…

Blackbox.AI:高效智能的生产力工具新选择

前言 在当今数字化时代&#xff0c;一款高效、智能且功能全面的工具对于开发者、设计师以及全栈工程师来说至关重要。Blackbox.AI凭借其独特的产品特点&#xff0c;在众多生产力工具中脱颖而出&#xff0c;成为了我近期测评的焦点。以下是我对Blackbox.AI的详细测评&#xff0…

海康摄像头IPV6模式,手动,自动,路由公告

海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议&#xff08;IP&#xff09;的第六版&#xff0c;用于替代IPv4&#xff0c;提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接&#xff1a; 手动&#xff1a;用户可…

【kafka系列】Kafka如何实现高吞吐量?

目录 1. 生产者端优化 核心机制&#xff1a; 关键参数&#xff1a; 2. Broker端优化 核心机制&#xff1a; 关键源码逻辑&#xff1a; 3. 消费者端优化 核心机制&#xff1a; 关键参数&#xff1a; 全链路优化流程 吞吐量瓶颈与调优 总结 Kafka的高吞吐能力源于其生…

sql sqlserver的特殊函数COALESCE和PIVOT的用法分析

一、COALESCE是一个返回参数中第一个非NULL值的函数&#xff0c; 列如&#xff1a;COALESCE&#xff08;a,b,c,d,e&#xff09;;可以按照顺序取abcde&#xff0c;中的第一个非空数据&#xff0c;abcde可以是表达式 用case when 加ISNULL也可以实现&#xff0c;但是写法复杂了…

unity学习44:学习Animator 的一个动作捕捉网站,实测好用

目录 1 动作捕捉网站 2 注册和下载 3 比如首页的内容&#xff0c;可以直接下载为fbx模型文件 4 上传并修改 5 在 unity里使用 5.1 下载的fbx文件直接拖入到unity 5.2 动画修改 5.3 游戏里播放 1 动作捕捉网站 一个动作捕捉网站 AI神器集合网站 千面视频动捕 | AI神器…

CPP集群聊天服务器开发实践(六):Redis发布订阅消息队列及服务器集群通信

前文实现了单服务器与多客户端之间的通信以及聊天业务&#xff0c;同时为了增大并发量利用nginx实现多服务器的集群负载均衡&#xff0c;但是一个关键的问题是要实现多服务器之间的通信&#xff0c;这里采用Redis的发布订阅消息队列实现。 不同客户端可能连接在不同服务器上&am…

掌握SQLite_轻量级数据库的全面指南

1. 引言 1.1 SQLite简介 SQLite 是一个嵌入式关系型数据库管理系统,它不需要单独的服务器进程或系统配置。它的设计目标是简单、高效、可靠,适用于各种应用场景,尤其是移动设备和嵌入式系统。 1.2 为什么选择SQLite 轻量级:文件大小通常在几百KB到几MB之间。无服务器架构…

基于javaweb的SpringBootoa办公自动化系统设计和实现(源码+文档+部署讲解)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 运行环境开发工具适用功能说明部分代码展示 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行…

LCD屏控制:你需要掌握的理论基础

目录 一、LCD介绍 1. 发展历程 2. 核心优势 3. 主要缺点 二、LCD屏幕工作原理 1. 核心结构 2. 工作原理 三、LCD屏分类 1. 信号类型划分 2. 材质分类 3. 接口类型分类 四、LCD屏常用接口 1. TTL(RGB)接口 2. LVDS接口 3. EDP接口 4. MIPI接口 &#xff08;1&a…

Audio-Visual Speech Enhancement(视听语音增强)领域近三年研究进展与国内团队及手机厂商动态分析

一、视听语音增强领域近三年研究进展 多模态融合与模型轻量化 多模态特征融合:中国科学技术大学团队提出通过引入超声舌头图像和唇部视频的联合建模,结合知识蒸馏技术,在训练阶段利用教师模型传递舌部运动知识,从而在推断时仅依赖唇部视频即可提升语音增强效果。此外,中科…

Hermite 插值

Hermite 插值 不少实际问题不但要求在节点上函数值相等&#xff0c;而且还要求它的导数值相等&#xff0c;甚至要求高阶导数值也相等。满足这种要求的插值多项式就是 Hermite 插值多项式。 下面只讨论函数值与导数值个数相等的情况。设在节点 a ≤ x 0 < x 1 < ⋯ <…