当前位置: 首页 > news >正文

[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());

相关文章:

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

开发环境问题 vs2022下直接打开ui、ts文件失败 解决办法如下图&#xff0c; 设置designer独立运行。估计是嵌入运行存在些许bug。 同理&#xff0c;ts编辑工具linguist也存在这个问题。 qrc rc的编辑嵌入编辑都正常&#xff0c;但分离式更稳定可靠。 qt creator编译失败 原…...

【在时光的棋局中修行——论股市投资的诗意哲学】

在时光的棋局中修行——论股市投资的诗意哲学 引子&#xff1a;数字之海与星辰之约 在经纬交织的K线图里&#xff0c;我常看见银河倾泻的轨迹。那些跳动的数字如同繁星坠落&#xff0c;在午夜时分编织着财富的密码。炒股之道&#xff0c;是理性与诗意的交响&#xff0c;是数据…...

IB网络错误检查工具ibqueryerrors

ibqueryerrors 是一个用于查询 InfiniBand 网络中错误统计信息的工具。它可以帮助网络管理员识别和诊断网络问题&#xff0c;如丢包、重传和其他通信错误。这个工具通常是 InfiniBand 管理软件包的一部分&#xff0c;例如 OpenSM&#xff08;Open Subnet Manager&#xff09;。…...

「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

论文阅读 DOES END-TO-END AUTONOMOUS DRIVING REALLY NEED PERCEPTION TASKS?

端到端的强势来袭&#xff0c;好久了~~~ 简单翻译&#xff1a;端到端真的需要感知任务嘛&#xff1f; code https://github.com/PeidongLi/SSR. https://arxiv.org/pdf/2409.18341 1. 摘要 端到端自动驾驶&#xff08;E2EAD&#xff09;方法通常依赖于监督式感知任务来提取显…...

25年黑龙江省考报名流程详细教程

2025年黑龙江省考报名马上就要开始报名啦&#xff01; 有想要参加黑龙江省考报名的同学&#xff0c;可以提前了解一下考试报名流程&#xff0c;熟悉考试报名照要求&#xff01; 一、考试时间安排 报名时间&#xff1a;2月18日9:00至2月23日17:00 缴费时间&#xff1a;2月18日…...

基于SpringBoot的小区运动中心预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

部署postgresql_exporter监控pgsql

部署exporter配置监控job配置告警规则 一键部署脚本 #!/bin/bash# 定义变量 PG_HOST"xx.ap-southeast-1.rds.amazonaws.com" PG_PORT"5432" PG_PASSWORD"bagayalu321" PG_USER"monitor_user" EXPORTER_VERSION"0.16.0" #…...

Mac本地部署deepseek

Ollama 运行deepseek需要本地运行工具ollama&#xff0c;安装路径如下 ollama官方网站 (https://ollama.com/download) 下载Mac版ollama&#xff0c;点击移至application下面 DeepSeek R1 14b 通过ollama安装deepseek&#xff0c;对应的运行指令可通过 deepseek本地部署列表…...

huggingface+下载deepseek8b lamda+本地部署 笔记

步骤倒过来 1.python hf_download.py --model unsloth/DeepSeek-R1-Distill-Llama-8B-GGUF model后加模型名&#xff08;HF-Mirror中查&#xff09; 【huggingface模型下载不下来&#xff1f;这里教你万能解决办法~huggingface小白使用指南。】 https://www.bilibili.com/video…...

中上211硕对嵌入式AI感兴趣,如何有效规划学习路径?

今天给大家分享的是一位粉丝的提问&#xff0c;中上211硕对嵌入式AI感兴趣&#xff0c;如何有效规划学习路径&#xff1f; 接下来把粉丝的具体提问和我的回复分享给大家&#xff0c;希望也能给一些类似情况的小伙伴一些启发和帮助。 同学提问&#xff1a; 中上211&#xff0c;…...

Jedis 客户端 用于java连接redis服务

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId...

车载诊断数据库 --- 通用性诊断数据库ODX

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...

docker 基础命令使用(ubuntu)

docker 状态查询 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作镜像命令 docker imagesdocker rmi 镜像id/镜像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 参数…...

IDEA集成DeepSeek

引言 随着数据量的爆炸式增长&#xff0c;传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术&#xff0c;凭借其强大的语义理解与深度学习能力&#xff0c;正在改变搜索领域的游戏规则。 对于 Java 开发者而言&#xff0c;将 DeepSeek 集成…...

Unity 接入Luabn记录图解

Luban 文档及链接项目目录UnityEditor 导表工具 文档及链接 官方文档 最新版本 项目目录 接入的方法有很多&#xff0c;我这里随便找了一种 https://gitee.com/focus-creative-games/luban_examples.git如上图&#xff0c;git拉去后&#xff0c;只保留圈起来的2个文件夹。…...

【MySQL】我在广州学Mysql 系列——Mysql 日志管理详解

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天又是新的一周了&#xff0c;又该摆好心态迎接美好的明天了&#xff01;&#xff01;&#xff01;&#x1f606; 本文主要对Mysql数据库中的日志种类以及基本命令进行讨论&#xff01;&#xff01; 回顾&#xff1a;&#x1f4…...

【线段树 二分查找】P3939 数颜色|普及+

本文涉及知识点 C线段树 C二分查找 P3939 数颜色 题目背景 大样例可在页面底部「附件」中下载。 题目描述 小 C 的兔子不是雪白的&#xff0c;而是五彩缤纷的。每只兔子都有一种颜色&#xff0c;不同的兔子可能有 相同的颜色。小 C 把她标号从 1 到 n n n 的 n n n 只兔…...

2011年下半年软件设计师考试上午题真题的详细知识点分类整理(附真题及答案解析)

以下是针对2011年下半年软件设计师考试上午题真题的详细知识点分类整理&#xff0c;涵盖所有题目涉及的核心知识点&#xff0c;供考生背诵记忆&#xff1a; 1. 数据结构与算法 树与图&#xff1a; 树的性质&#xff1a;树的节点数、深度、叶子节点数之间的关系。二叉树遍历&am…...

tmagic-editor,腾讯开源的基于 Vue3 的页面可视化编辑器

hi, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践&#xff0c;也陆陆续续设计并开发了多款可视化搭建产品&#xff0c;比如&#xff1a; H5-Dooring&#xff08;页面可视化搭建平台&#xff09;V6.Dooring&#xff08;可视化大屏搭建平台&#xff09;F…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...