《QDebug 2022年12月》

article/2025/10/14 17:04:04

一、Qt Widgets 问题交流

二、Qt Quick 问题交流

1、在 C++ 中关联 QQuickWindow 的 closing 信号提示 "使用了未定义类型QQuickCloseEvent"

因为 closing 信号中的参数类型是 private 模块中定义的,但是通过第二句提示我们知道找到了完整定义才能使用 Q_DECLARE_METATYPE(T*) ,而 Qt 提供了不透明指针宏 Q_DECLARE_OPAQUE_POINTER ,使得应用 Q_DECLARE_METATYPE(T*) 时不必找到完整定义。

加上此宏后即可以编译通过,只是不能接收这个参数:

Q_DECLARE_OPAQUE_POINTER(QQuickCloseEvent*)
int main(int argc, char *argv[])
{QGuiApplication app(argc, argv);QQmlApplicationEngine engine;const QUrl url(QStringLiteral("qrc:/main.qml"));QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,&app, [&myobj, url](QObject *obj, const QUrl &objUrl) {if (!obj && url == objUrl)QCoreApplication::exit(-1);QQuickWindow *win = qobject_cast<QQuickWindow*>(obj);if (win) {QObject::connect(win, &QQuickWindow::closing, [](){});}}, Qt::QueuedConnection);engine.load(url);return app.exec();
}

另一种能够通过编译的方式是使用 SIGNAL/SLOT 宏来关联信号槽:

QObject::connect(win, SIGNAL(closing(QQuickCloseEvent*)),&myobj, SLOT(onClose()));

2、QML 的文件夹对话框没有进入该目录只是单击选中那么 folder 属性获取不到这个文件夹

如图,单机选中 QtOnline 文件夹,并点击 【选择文件夹】按钮

此时打印 FolderDialog 的 folder 属性,不会出现 QtOnline ,除非双击进入这个目录

 

QtWidget 的 QFileDialog 就能正确的获取这个路径。 

测试代码:

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import QtQuick.Dialogs 1.3 as QD
import Qt.labs.platform 1.1 as LabsWindow {width: 640height: 480visible: truetitle: qsTr("GongJianBo")Button {text: "open"onClicked: {dialog2.open()}}QD.FileDialog {id: dialog1selectFolder: trueonAccepted: {console.log(dialog1.folder)}}Labs.FolderDialog {id: dialog2onAccepted: {console.log(dialog2.folder)}}
}

3、BusyIndicator 如果 running 绑定 visible,那么隐藏后第二次 visible 为 true 时不会显示出来

图一是第一次 visible,图二是第二次 visible。

BusyIndicator 内部使用了一个透明度动画,runing 的时候透明度为 1,停止时为 0。而在事件处理中,透明度为 0 时又会设置 visible 为 false。

T.BusyIndicator {contentItem: BusyIndicatorImpl {running: control.runningopacity: control.running ? 1 : 0Behavior on opacity { OpacityAnimator { duration: 250 } }}
}
void QQuickDefaultBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
{QQuickItem::itemChange(change, data);switch (change) {case ItemOpacityHasChanged:if (qFuzzyIsNull(data.realValue))setVisible(false);break;case ItemVisibleHasChanged:update();break;default:break;}
}

可是即使我们调整透明度动画大于 0 ,仍然不能显示,那是因为源码用的 OpacityAnimator,只在开始和结束触发值改变的信号,而且就算指定了起止 from 和 to,最终也是在 0 和 1 变化。

不过,我们根本不需要设置 runing 为 false,因为源码中逻辑可能和我们想的不一样,我们只需要设置 visible 即可。

void QQuickDefaultBusyIndicator::setRunning(bool running)
{if (running)setVisible(true);
}

测试代码:

    Button {text: "pop"onClicked: pop.open()}Popup {id: popcontentItem: BusyIndicator {id: busywidth: 80height: 80running: visible}}

三、其他

1、QImage 的数据默认至少 4 字节对齐

QImage 文档:https://doc.qt.io/qt-5.15/qimage.html

通过 bits() 返回的地址操作内部连续数据时,需要注意行对齐问题,可以通过 bytesPerLine() 获取每行字节数,也可以通过 scanLine(int i) 接口来逐行遍历。

2、QImage/QImageReader 加载修改了后缀名的图片

在旧版本中如果图片改了后缀名,QImage 可能无法正常加载,因为默认以后缀名来确认格式。可以通过 QImageReader 来读取,设置 decideFormatFromContent 为 true 后不以后缀判断格式:

    QImageReader reader(filepath);//setDecideFormatFromContent之前调用format会导致设置无效//qDebug()<<reader.format();reader.setDecideFormatFromContent(true);qDebug()<<reader.format();QImage img = reader.read();

在 Qt5.15 中,经测试默认可以正确加载修改了后缀的图片。 


http://chatgpt.dhexx.cn/article/LKaPWC4Y.shtml

相关文章

4.4 案例8 用qDebug()输出信息

本案例对应的源代码目录&#xff1a;src/chapter04/ks04_04。 在开发C/S&#xff08;Client/Server&#xff0c;客户端/服务端&#xff09;模式的软件时&#xff0c;服务端程序&#xff08;有时也称作服务&#xff09;经常运行在两种模式下。 &#xff08;1&#xff09;终端模…

Qt扫盲-QDebug理论总结

QDebug理论使用总结 一、概述二、使用1. 基础使用2. 格式化选项3.将自定义类型写入流 一、概述 每当开发人员需要将调试或跟踪信息写入设备、文件、字符串或控制台时&#xff0c;都会使用QDebug。这个就可以方便我们调试&#xff0c;基本上Qt所有的内容都能通过调试打印出来&a…

Qt重定向QDebug,自定义一个简易的日志管理类

0.前言 相对于第三方的日志库&#xff0c;在 Qt 中使用 QDebug 打印更便捷&#xff0c;有时候也需要对 QDebug 输出进行重定向&#xff0c;如写入文件等。 在 Qt4 中使用 qInstallMsgHandler 函数设置重定向的函数指针&#xff1a; typedef void (*QtMsgHandler)(QtMsgType,…

qDebug 控制台输出

做个小笔记:qDebug 控制台输出 Ⅰ&#xff1a;*.pro文件中添加 win32:CONFIG console Ⅱ&#xff1a;配置项目运行设置&#xff0c;将Run in terminal 复选框打勾 Ⅲ&#xff1a;添加头文件 #include <QDebug> Ⅳ&#xff1a;用qDebug()<<"xxxx";输…

Qt ——debug调试

程序调试&#xff1a; 方法一&#xff1a;断点调试法方法二&#xff1a;使用qDebug()函数 方法一&#xff1a;断点调试法 我们可以在程序加断点&#xff0c;然后再利用单步调试查看变量的值是否异常。 1. 设置断点。 可以左击相应的代码行前的区域&#xff08;下图用红色框标…

jadx反编译—下载和使用(傻瓜教程,非常详细)

原文地址 一、在GitHub上直接下载 下载地址 可以下这个版本&#xff1a; 二、运行图形化界面 1、将zip文件解压后定位到在lib文件夹中&#xff0c;在此处打开命令行 2、运行jadx-gui-0.7.1.jar&#xff08;前提是已经装好了JDK1.8&#xff09; 命令如下&#xff1a; <sp…

Android APK 反编译工具 JADX

文章目录 JADX 介绍JADX 安装JADX 使用补充APK 目录结构含义APK 打包流程 JADX 介绍 GitHub 地址&#xff1a;https://github.com/skylot/jadx JADX 支持将 APK, dex, aar, zip 中的 dalvik 字节码反编译为 Java 代码&#xff0c;也支持反编译 AndroidManifest.xml 和 resource…

jadx-gui 重命名功能

jad-gui 是大家常用的一款反编译工具&#xff0c;其中有些小使用技巧可以帮助大家更快的“学习”知识。 安装 方法参考项目GitHub主页 重命名 最新的 1.2.0 版本支持了方法、类、字段的重命名&#xff0c;这是一个非常有用的功能&#xff0c;之前反编译出来的都是混淆后的名…

Android 反编译神器jadx的使用

一、前言 今天介绍一个非常好用的反编译的工具 jadx 。jadx 的功能非常的强大&#xff0c;对我而言&#xff0c;基本上满足日常反编译需求。 jadx 优点&#xff1a; 图形化的界面。拖拽式的操作。反编译输出 Java 代码。导出 Gradle 工程。 这些优点都让 jadx 成为我反编译…

jadx工具windows下载

Release v1.2.0 skylot/jadx GitHubDex to Java decompiler. Contribute to skylot/jadx development by creating an account on GitHub.https://github.com/skylot/jadx/releases/tag/v1.2.0选择第三个jadx-gui-1.2.0-with-jre-win.zip解压exe可正常使用

jadx反编译—下载和使用

一、在GitHub上直接下载 https://github.com/skylot/jadx 可以下这个版本&#xff1a; 二、运行图形化界面 1、将zip文件解压后定位到在lib文件夹中&#xff0c;在此处打开命令行 2、运行jadx-gui-0.7.1.jar&#xff08;前提是已经装好了JDK1.8&#xff09; 命令如下&#xf…

jadx初识

一.jadx介绍 一款相对流行的反编译工具 下载&#xff1a;https://github.com/skylot/jadx/releases/tag/v1.0.0 解压后得到这么几个文件&#xff1a; 启动&#xff1a;&#xff08;以下来两个文件都可以&#xff09; 启动后的界面&#xff1a; 二.使用 打开之后&#xff0c;你可…

反编译工具之jadx

反编译神器之 - jadx git网址&#xff1a; https://github.com/skylot/jadx简介 首先推荐功能强大的jadx&#xff0c;官方网站为&#xff1a;https://github.com/skylot/jadx&#xff0c;可以直接在releases页面下载其最新版&#xff0c;解压即可使用。 安装 Windows下安装 …

Android 反编译工具 jadx-gui

jadx-gui 是一种基于 jadx 项目的图形界面工具&#xff0c;用于反编译 Android 应用程序的工具。通过使用jadx-gui&#xff0c;开发人员可以打开 APK&#xff08;Android应用程序包&#xff09;文件&#xff0c;并查看其反编译的源代码。这对于分析、理解和调试 Android 应用程…

jadx工具介绍及使用

往期推荐 签名校验之“xx银行” Jeb调试ctf(破解密码 Crack the key) ”川报观察“协议分析(抓不到包) 实战分析43XX的HTTPS协议 需要相关资料的朋友&#xff0c;可以【加入此处即可打包获取】 jadx工具是一款反编译利器&#xff0c;同时支持命令行和图形界面&#xff0c…

Java jar反编译工具 jadx

jadx 支持 Windows、Linux、 macOS 项目下载地址 https://github.com/skylot/jadx/releases 按需下载 1.下载zip解压后&#xff0c;进入 bin 目录即可找到执行脚本 jadx&#xff1a;命令行版本 jadx-gui&#xff1a;图形操作界面版本2.下载exe本地双击运行&#xff0c;将…

kali Linux 逆向环境pyenv、Frida、objection、jadx、的安装

目录 1.pyenv安装和使用 1.1pyenv 简介 1.2pyenv 常用命令 1.3pyenv安装和使用 2.Frida安装 2.1Fraida简介 2.1Fraida安装 2.2objection安装 2.3objection常用命令 查看日志 查看包含Frida的日志信息 查看objection的帮助命令 2.3.0进入objection REPL环境 2.3.1直接…

jadx动态调试安卓apk

选用某ctf题目的apk作为调试目标。 工具&#xff1a; 雷电模拟器 jadx1.3.2 步骤&#xff1a; 1、在雷电模拟器安装apk&#xff1a; 2、在jadx打开apk&#xff1a; 3、检查模拟器的adb服务状态&#xff1a; 必须确保模拟器里的adb服务启动&#xff0c;且状态正常&#xff0…

android 反编译 jadx,jadx gui下载 jadx(Android反编译gui工具) v0.6.1 官方版 下载-脚本之家...

jadx是一款Android反编译gui工具&#xff0c;它支持apk、dex、jar、class、zip、aar等文件。jadx操作方便&#xff0c;反编译后的代码可读性高&#xff0c;同时还拥有较完善的gui界面&#xff0c;除去混淆部分的代码&#xff0c;jadx已经非常接近源代码了。需要的朋友可以下载试…

jadx反编译

刚发现的一个反编译神器jadx,对比之前的apktool跟dex2jar,jadx胜在可读性好太多,apktool后的smali长的跟汇编语言一样,dex2jar产生的源码也经常出现奇奇怪怪的语法,让我理解不能. jadx GitHub 地址:https://github.com/skylot/jadx 下载或克隆后,在目录下运行 ./gradlew dis…