
Qt
文章平均质量分 52
Qt
SleepyPat
化整为零
有的放矢,心无旁骛
展开
-
[Qt] Qt for android, gradle-8.3-bin.zip (No such file or directory)
android 工程需要 gradle 作为打包工具,Qt for android 如果想要打包 apk 同样需要使用 gradle,但是 包括 Android studio 在内的诸多 Android IDE 工具都没有自带的 gradle 工具,可能是因为 gradle 的版本迭代较快,因此各个 IDE 均采用从服务器实时下载 gradle 的方式。原创 2024-07-01 15:13:41 · 1269 阅读 · 0 评论 -
[Qt] qmldir文件说明
前沿:制作Qt插件时会用到qmldir文件,此文件用来描述插件的相关信息,当我们在qml中使用import语句时入股采用 uri 方式导入模块,则需要模块路径下有对应qmldir文件。(另一种import方式为路径导入)回忆:插件分为两种,一种是c++生成的dll文件,一种是qml文件,这两种插件都需要qmldir来描述,以便import的动作能够正确工作。module 是指包含 dll lib qml qmldir ... 文件的 “文件夹” , 插件也是一种模块,因此也需要具备qmldir文原创 2020-07-10 14:59:26 · 3158 阅读 · 0 评论 -
[Qt] “No CMake configuration found!“
ubuntu 上安装 Qt Desktop 版本后,配置工程时提示。这是因为缺少cmake,安装cmake 及 libgl-dev。原创 2023-03-29 17:41:19 · 1715 阅读 · 0 评论 -
[Qt] QList中存放指针时是否会自动delete指针指向的对象
前言:在使用QList的时候,往往会对其进行清空操作,但是如果QList中存放的是指针( 指向使用new分配的对象 ),那么QList的clear()动作是否会触发delete?正文:结论:QList在clear的时候不会delete其中的指针成员。QList清空元素的方法为clear(),其源码为:template <typename T>Q_OUTOFLINE_TEMPLATE void QList<T>::clear(){ *this =.原创 2020-07-23 11:57:01 · 3173 阅读 · 0 评论 -
[Qt] Qt 中的智能指针
类别:QSharedPointerQScopedPointerQScopedArrayPointerQWeakPointerQPointerQSharedDataPointerQSharedPointer:类比 std::shared_ptrQScopedPointer:类比 std::unique_ptrQScopedArrayPointer:指向数组的 std::unique_ptrQPointer:自释放指针,这个指针离开作用于不会触发资源释放动作,其.原创 2021-08-24 16:40:18 · 584 阅读 · 0 评论 -
[Qt] FocusScope的作用
如果在处理焦点变换时无法达到预期,则需要考虑引入 FocusScope 来管理 focus 事件。QML中事件的传递顺序是 “从外而内,从下而上” ,这个顺序是和qml内部组件实例化顺序一致的。Rectangle{ //截断focus事件 Rectangle{ //由于外层截断了focus,所以永远无法获取focus事件 } Rectangle{ //由于外层截断了focus,所以永远无法获取focus事件 } }FocusScope{ id:roo原创 2021-10-13 17:46:47 · 1824 阅读 · 0 评论 -
[Qt] QML底层工作原理
https://www.jianshu.com/p/3e959cbaff3a原创 2020-07-03 14:32:26 · 2320 阅读 · 0 评论 -
[Qt] QML动画相关
参考:Fluid Elements | The Qt 6 BookUntil now, we have mostly looked at some simple graphical elements and how to arrange and manipulate them.https://www.qt.io/product/qt6/qml-book/ch05-fluid-fluid-elements正文:原创 2021-10-13 18:01:01 · 87 阅读 · 0 评论 -
[Qt] Qt中使用自定义字体文件 .ttf
Step 1QML中使用 font.family 时所有可用的字符串值可通过如下代码查询: QFontDatabase qfd; QStringList qsl = qfd.families();QStringList qsl 中就是所有可选字符串Step 2如果想扩充字体,比如 Linux 下Qt 根本就不包含字体文件,这个时候需要自己下载并指定字体。可以通过如下代码添加字体文件到字体数据库: int localFont = QFontDataba原创 2021-10-12 11:26:48 · 2038 阅读 · 0 评论 -
[Qt] 圆角矩形的渐变色填充
Rectangle{ id:bg_1 anchors.fill: parent visible: false LinearGradient{//渐变色背景 anchors.fill: parent start: Qt.point(0, 0) end: Qt.point(bg_1.width, 0) gradient: Gradient {...原创 2020-06-08 10:09:52 · 1166 阅读 · 0 评论 -
[Qt] Qt Quick 中的 Scene Graph 是什么?
区别Qt Quick 2系列组件使用了 Scene Graph进行组件的绘制和渲染,这与之前使用 Painter系统(QPainter/Canvas) 有所不同。如果一个Windows中包含30个组件,那么使用Painter系统需要对这30个组件依次进行绘制,这其中可能包括绘制底色,加载icon,加载纹理等等。 每个组件都经历这些步骤的话就会显得很耗费时间。使用Scene Graph的话,这30个组件的绘制就是按批次进行的,第一批次绘制所有组件的底色,第二批动作加载icon,第三批加载纹理。这里原创 2021-07-02 15:47:05 · 446 阅读 · 0 评论 -
[Qt] Qt 的 Quick Control 1 包含了哪些内容
Qt 再 5.12 版本开始退出了 Qt Quick Control 2 组件包,相较于 版本1 提高了效率和易用性,现在通过 configure -skip qtquickcontrols 命令跳过 版本1 重编Qt,进而看一下 版本1 到底有哪些内容。全量编译时 qml/QtQuick 目录下的内容:.├── a.txt├── Controls│├── ApplicationWindow.qml│├── BusyIndicator.qml│├── Button....原创 2021-09-29 17:46:07 · 618 阅读 · 0 评论 -
[Qt] Qt官方文档书签
Qt Quick Control 2 —— root page :Qt Quick Controls 5.15.6原创 2021-10-12 11:09:52 · 172 阅读 · 0 评论 -
[Qt] Invalid property name “xxx“ M16
Qt Creator 会对QML进行运行前检查,如果qml 组件不包含某些属性,则会报错Invalid property name "xxx" M16 ,但是像一些数据类型的组件都是不包含固定属性的,比如ListElement,无论在其中定义何种属性,都会提示错误,这其实不是真的有问题。那么如何去除IDE中茫茫多的报错呢?可以在报错语句上方加入语句: // @disable-check M16比如:ListElement { // @disable-check M16 ...原创 2020-07-07 09:29:44 · 6054 阅读 · 2 评论 -
[Qt][工程构建] Qt Quick 工程如何打包
步骤一:打包依赖的动态库将生成的exe文件放到单独的路径下,执行windeployqt name.exe此时会在同级路径下获得所有依赖的动态库。步骤二:打包依赖的模块如果是Qt Quick工程,那么exe 还会依赖 Qt Quick 模块。在步骤一的同级路径下,再运行windeployqt name.exe -qmldirC:\Qt\Qt5.12.6\5.12.6\msvc2017\qml此时会在同级路径下获得所有依赖的 模块。注:C:\Qt...原创 2020-08-14 18:17:50 · 719 阅读 · 0 评论 -
[Qt] Windows下的Qt Base源码编译
前言:Qt Base包含的模块有:Qt5Xml 、Qt5Widgets、Qt5Test、Qt5Sql、Qt5PrintSupport、Qt5OpenGL、Qt5Network、Qt5Gui、Qt5DBus、Qt5Core、Qt5Concurrent、libGLESv2、libEGL。每个模块对应的含义可在官方help中找到。官方参考:编译步骤:https://doc.qt.io/qt-5/build-sources.html源码路径:http://download.qt.io/offi.原创 2020-12-06 20:20:36 · 2351 阅读 · 0 评论 -
[Qt] QWidget QWindow 窗口管理器(WM)
Widget 和 窗口Qt中,没有Parent 的 Wiget(QWidget 及其子类) 会自动成为一个窗口,如果一个QButton 没有parent,同样会成为一个窗口:窗口是由操作系统统一管理的,所谓窗口是指:可以接受 鼠标、键盘 、其他外设 触发事件的对象,这些窗口对象由操作系统调度和管理(Qt 会对窗口管理器WM做一次封装)。窗口一般有title、winid、最大化、最小化、关闭等等默认属性,这些都是为了方便操作系统管理。自绘 Widget所有 Widget 都可以自绘原创 2021-10-13 11:17:00 · 3791 阅读 · 0 评论 -
[Qt] Scene Graph相较于Painter系统的性能优势
Helppage :Qt Quick Scene Graph OpenGL Renderer文中提到:1)Scene Graph的原理 2)可以从哪些角度考虑优化渲染速度原创 2021-07-05 09:35:32 · 236 阅读 · 0 评论 -
[Qt][Android] Qt for Android 环境搭建
建议使用 ubuntu 20.04,Qt 版本使用 Qt 6.4 ,JDK 版本使用 11,这里建议使用openJDK。建议使用 Linux 环境开发 Qt for Android,Windows 环境不好弄,问题多。原创 2023-03-23 19:58:57 · 518 阅读 · 0 评论 -
[Qt] 使用MaintenanceTool.exe安装pdb文件
将如下路径添加到MaintenanceTool.exe的临时远程仓库列表汇总: https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5126/ https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_mingw/ https://download.qt.io/online/qtsdkrepository/wind...原创 2020-06-29 10:03:04 · 521 阅读 · 1 评论 -
[Qt] MaintenanceTool.exe工具使用
前言:Qt提供了自己的软件仓库,可以使用MaintenanceTool.exe链接此仓库,然后进行软件更新和其他维护步骤:国内所有软件仓库代理站点:http://download.qt.io/static/mirrorlist/ 选择适用的站点,然后依次进入如下目录:/online/qtsdkrepository/windows_x86/root/qt/ ,比如:http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/win.原创 2020-06-29 09:31:07 · 2867 阅读 · 0 评论 -
[Qt] QML中一些容易犯错的点
属性赋值会导致属性绑定失效Rectangle{ id:rec ... width : 2*height ...}Timer{ ... onTrigger{ rec.width = 100 } ...}上述代码中,当定时器触发时会给rec的width赋值,此时width = 2* heght 的属性绑定关系将永久失效,如果想保留绑定关系,则要使用 binding 函数重新绑定 :Rectangle{ .原创 2021-10-13 16:09:10 · 395 阅读 · 0 评论 -
[Qt] 元编译器报错
..\ObtUI\__BUILD\x64\moc\release\moc_CvImageProvider.cpp(92): error C2039: “staticMetaObject”: 不是“QQuickImageProvider”的成员c:\qt\qt5.12.6\5.12.6\msvc2017_64\include\qtquick\qquickimageprovider.h(95): note: 参见“QQuickImageProvider”的声明..\ObtUI\__BUILD\x64\.原创 2021-07-07 14:40:54 · 284 阅读 · 0 评论 -
[Qt] Qt源码与模块对应关系
qtbase-everything:Qt CoreCore non-graphical classes used by other modules.Qt GUIBase classes for graphical user interface (GUI) components. Includes OpenGL.Qt WidgetsClasses to extend Qt GUI with C++ widgets.Qt Test...原创 2021-09-27 14:37:11 · 258 阅读 · 0 评论 -
[Qt] QFrame
QFrame 就是包含自绘边框的 QWidget:QFrame如果没有 parent ,则它会被 WM 创建一个窗口来管理。原创 2021-10-13 13:55:02 · 506 阅读 · 0 评论 -
[Qt][Windows] Windows环境下Qt调试环境的搭建
前言:Windows环境下,Qt使用CDB作为调试器,目前Qt安装包不会自带此调试器,因此需要自行下载和配置。下载:CDB的下载目前没有找到比较好的官方途径,不过可以 “曲线救国” ,微软钦定的调试器windbg会自带CDB调试器,可能windbg就是对CDB的图形化封装。因此我们直接去微软官网下载windbg。配置:在windbg的安装路径中找到 cbd.exe (这里建议把windbg的 x86版本 和 x64版本都下载下来),把他们分别拷贝到相应的Qt安装版本的bin目..原创 2020-09-04 15:06:42 · 965 阅读 · 0 评论 -
[Qt] Linux环境下从源码编译Qt
官网参考:Qt for Linux/X11 - Building from Source | Qt 5.15源码下载:Index of /archive/qt/5.15/5.15.0/submodules这里使用的是各个模块单独编译,这样有助于摸清各个模块之间的依赖关系工程配置Configure:默认情况下,可以直接运行 ./configure ,如果想增加定制化需求,则需要自行指定参数:============== 全局 install相关 ===========原创 2021-09-23 11:37:05 · 7536 阅读 · 1 评论 -
[Qt] windows 下 Qt for android gradle 下载失败
Qt for Android 工程编译时会用到 gradle (较老的Qt版本,Qt 9 会用到,Qt 12 开始会在Qt 安装时内置)。默认情况下 gradle 是要从 服务器临时 下载的 , 有时候网络不行或者其他配置问题,会导致下载失败,这个时候我们可以去找到对应的版本,手动下载到本地,然后手动指定 gradle 的地址即可。否则会一直编译不过。原创 2023-03-22 10:35:46 · 2522 阅读 · 6 评论 -
[Qt] 编译Qt工程时遇到 DSO missing from command line
现象:在进行跨平台移植时,编译工程遇到如下提示:/usr/bin/ld: tmp/obj/mywindow.o: undefined reference to symbol 'XShapeCombineRectangles'/usr/bin/ld: //lib/x86_64-linux-gnu/libXext.so.6: error adding symbols: DSO missing from command line分析:首先查看源码mywindow.cpp ,代码中使用了 X1原创 2021-10-09 10:22:22 · 1752 阅读 · 0 评论 -
[Qt] 视频图像帧处理的几个手段
1)使用OpenGL对视频帧图像进行二次渲染;2)结合 ShaderEffect 和 VideoOutput 来对 VideoOutput 内每一帧图像附加一个渲染效果;3)使用QAbstractVideoFilter给第三方图像处理库提供一个渲染入口,同样要配合VideoOutput 使用。这三种方法的应用场景:1)c++框架下,流媒体场景多用,因为流媒体会把yuv数据传给渲染模块,渲染模块可以再对yuv数据渲染的时候对 shader 程序进行定制化调整。2)qml框架下,...原创 2021-07-09 09:22:04 · 1264 阅读 · 0 评论 -
[Qt] Linux环境下从源码编译Qt —— 模块特性
Module 特性 Feature:Qt有很多modules构成,每个module都有自己的特性featrue,我们可以在configure的时候指定哪些模块打开/关闭哪些特性,具体的列表如下:abstractbutton .......... Widgets: Abstract base class of button widgets, providing functionality common to buttons.abstractslider .......... Widgets: Co原创 2021-09-23 15:53:00 · 1170 阅读 · 0 评论 -
[Qt] QML内部组件实例化顺序
代码:import QtQuick 2.12import QtQuick.Window 2.12Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Component.onCompleted: { console.log("win") } Rectangle{ width: 10 height:原创 2021-10-13 17:17:51 · 965 阅读 · 0 评论 -
[Qt] Qt下载地址整理
Qt 官网页面经常会变,有时候找起来有些费劲,这里整理一些 Qt 的官方下载地址。原创 2023-03-21 19:31:09 · 1505 阅读 · 0 评论 -
[Qt][工程构建] Qt插件技术(c++实现导出为qml组件)
前言:首先搞明白qt中插件的概念:插件:一个可在运行时加载的动态库Qt中,使用QPluginLoader加载插件既然插件是一个动态库,那么把它静态编译到可执行文件中也是允许的对于使用插件的应用程序来说,Qt 插件就是一个 QObject,只不过这个QObject需要实现插件InterfacePluginDialog::staticInstances()可以获得当前应用程序已经加载的所有插件由此,可以理解PluginDialog管理所有插件Qt中的插件分为两种:1)应用程原创 2020-07-09 11:31:00 · 1034 阅读 · 0 评论 -
[Qt] QML中id的机制
qml中每个组件都有自己的id,id一般情况下是文件范围内可访问,之所以说一般情况下,是因为qml采用的是 “id动态作用域” 策略,在这种策略模式下,后实例化的 qml 文件中 id 会覆盖之前创建的 id , 也就是说其实 id 是全局范围的,这在编程时会带来 “一些便利” 和 “很多麻烦”。便利是指我们可以组织一个 id 策略来保证全局 id 唯一,这样的话我们便可以创建一些全局可访问的组件。麻烦是指我们没法关闭这个策略,也就是说如果有其他人接手代码,那么没法保证其他人能够遵循全局唯一id的.原创 2021-10-13 15:59:39 · 1956 阅读 · 0 评论 -
[Qt] Online installer 提示 Network error while downloading
目前Qt 对于高于5.15的版本,不再提供离线安装包,取而代之的是在线安装器。原创 2023-03-21 10:51:24 · 2861 阅读 · 1 评论 -
[Qt] 键盘长按如何实现
参考:https://blog.youkuaiyun.com/sinat_21107433/article/details/101848809原创 2020-07-02 08:44:00 · 1526 阅读 · 0 评论 -
[Qt] Qt中控件的尺寸
Qt中空间的长宽是指盒子模型中border盒子的长宽,不包含margin外沿。从官方文档的如下语句可以看出来:A background-image does not scale with the size of the widget. To provide a "skin" or background that scales along with the widget size, one must use border-image....原创 2021-02-18 16:11:37 · 687 阅读 · 0 评论 -
[Qt] Qt核心知识点
#1 =========================================================================================本征 和 值所有继承自QObject的类的实例,都会在元对象系统中注册自己,他们除了具备c++类的基本特征外,还具备Qt特有的特征,即本征。所谓的本征是此对象在元对象注册信息的合集,比如:1)当前对象和其他对象的信号/槽链接关系;2)每个对象都有的objectname3)此对象在元对象系统的 “对象树” 中的.原创 2021-08-03 22:14:14 · 753 阅读 · 0 评论 -
[Qt] 使用MouseArea 是需要注意的点
多个MouseArea存在重叠区域时,使用 propagateComposedEvents 进行事件的传递分配,这些在 Qt 的帮助文档里都有,这里不赘述。这里需要说一下当 MouseArea 和 包含鼠标事件的组件一起使用会出现的问题:问题一:组件的鼠标事件全部失效问题二:解决了问题一以后,MouseArea的drag拖拽功能失效编程建议:当MouseArea 和 有鼠标事件的组件一起使用时,请把包含组件的 Item 和 MouseArea 分离,且把 MouseAre...原创 2021-06-10 16:50:16 · 582 阅读 · 0 评论