- 博客(24)
- 收藏
- 关注
原创 为什么类的成员函数不能直接作为回调函数,而需要用std::bind构造一个新函数?
成员函数不是“自由函数”,它隐式地需要一个 this 指针才能执行。而任何回调接口(如 std::function<void()>、Qt 的 signal/slot、线程入口等)在类型签名上只描述“需要哪些参数”,却永远不会把“哪个对象”也当作参数传进去。因此必须把 “this 是谁” 提前绑定到那个函数上,让接口看到的最终是一个无参(或只剩真正业务参数)的可调用体——这一步就是 std::bind(或 lambda 捕获)做的。
2025-11-05 16:57:44
64
原创 Qt中QAbstractEventDispatcher的processEvent和QEventLoop的processEvent有什么区别
直接和平台相关的事件机制打交道(如 Windows 的消息循环、X11 的事件等)。,但还会做一些额外的逻辑,比如处理退出标志、事件循环状态等。,它内部会调用当前线程的。来完成实际的事件分发。
2025-10-14 20:08:24
100
原创 Qt中通过ODBC查询Sql Server数据库时,读取内容错误问题
Qt库通过ODBC查询数据库时(驱动为Sql Server),在大部分电脑上都是好的,唯独在一台电脑上出现查询数据返回随机数问题(查询的字段类型为INT),经过一番折腾后确定是数据库驱动问题,换成。Sql Server驱动是比较老的驱动程序,
2025-10-14 19:52:19
114
原创 Eigen库中Transform的Affine模式和Isometry模式的区别
因此,通过Transform计算相应的四元数时,对于Affine模式的变换只能用rotation()构造(linear中包含旋转,缩放,裁剪等操作),而Isometry模式的变换可以用linear。仿射变换包含平移、旋转、缩放和错切(Shear)操作,能够组合使用这些变换。其核心特征是保持直线平行性,即变换后物体的形状和方向改变,但物体间的相对位置关系不变。只包含旋转和平移操作。
2025-10-14 19:29:18
85
原创 QML中属性绑定后页面的刷新机制
下面把“谁通知、谁监听、谁重绘”三个环节拆开说明。主线程把这一帧里所有标记为 dirty 的绑定。场景图拿到新的几何/材质/变换矩阵,生成。,进而触发 Qt Quick 场景图的。渲染线程(OpenGL/RHI)执行。(不是立即求值,避免高频抖动)。在 QML 中,属性一旦绑定,)在 C++ 侧已经预埋好的。刷新与重绘(谁来真正刷新界面)把当前绑定表达式封装成一个。引擎把 dirty 绑定放进。),场景图线程会锁定主线程;记录到一张“依赖表”里;变更通知(什么时候触发)依赖登记(谁来监听)
2025-10-14 09:59:27
303
原创 QML中Context层级结构特点
每个 QML 组件实例化时,系统会为其创建一个对应的。所有顶层 QML 组件共享这个根上下文。找不到则沿着父上下文链向上查找;启动时自动创建一个根上下文。如果子上下文中设置了与父上下文。先在当前组件的上下文中查找;在根上下文中设置的属性,,形成“上下文链”。
2025-10-14 09:46:03
146
原创 Qt中如何正确添加资源文件
资源文件(qrc)的目的是将软件用到的资源(图片,字体,文件...)直接编译输出到exe文件中从而减少软件运行依赖,但exe文件也会变大很多。只有将RESOURCE_FILES文件加入到目标文件中才会真正将资源数据编译输出到exe中。只有加了这一句,rcc程序才会编译myres.qrc并生成qrc_myres.cpp。
2025-09-05 23:36:55
259
原创 QtQuick中如何让ScrollView的滚动条永远在最后
当然,以上语句需要在内容发生变化后通过信号触发。通过以下操作可以让水平滚动条永远在最后。
2025-09-02 22:57:46
121
原创 在QtQuick中使用vtk,如何让vtk响应键盘事件
VTK中的VTKRenderItem和VTKRenderWindow在QtQuick中的封装原型是QQuickItem,因此除了设置VTK端的vtkCommand观察者,还需要在QtQuick端设置是否接收键盘事件,如下:
2024-12-25 22:27:39
291
原创 Qt Creator如何在Release模式下开启调试
就可以在Qt Creator的Release模式下调试了。开发环境: Qt Creator + MSVC2019。Qt工程采用CMake配置。在CMake文件里加上。
2023-12-16 17:59:07
1051
1
原创 无法解析的外部符号 “staticMetaObject”
Qt+CMake,编译报错无法解析的外部符号 “staticMetaObject”
2022-05-15 21:32:06
5124
2
原创 Qt UDP收发数据CPU占用率100%问题
用Qt开发了一个UDP收发数据的动态链接库,然而当Visual studio一调用该dll就CPU占用100%,网上各种搜后,可能原因如下:1、在paintEvent中调用update函数,造成无限循环2、频繁刷新数据3、复杂的浮点运算4、死循环5、paintEvent里操作太多我的情况...
2021-06-11 11:23:23
1540
2
原创 VS加载DLL报---找不到指定的模块(126)
Qt开发的dll,在VS项目里加载报”找不到指定模块“,GetLastError = 126即使LoadLibrary用绝对路径也不对这是因为Qt开发的dll往往还依赖Qt本身的dll文件,当LoadLibrary找不到这些文件时也会报126因此用指令windeployqt xxx.dll看看dll都依赖了哪些库,然后一起放在exe路径下就可以了。因此LoadLibrary不仅需要找引用的dll本身,还需要找dll依赖的dll,否则就会报126....
2021-05-14 10:39:45
2077
2
原创 QLabel内容自动换行
与自动换行相关的函数:QLabel::setWordWrap(bool)原文文档:If this property is true then label text is wrapped where necessary at word-breaks; otherwise it is not wrapped at all.这里有个关键点就是要想成功换行就要有word-breaks,测试发现如果内容为全英文,数字等可Ascii编码的内容,word-breaks为空格,如:abcddfegsfdseg
2021-02-24 13:09:58
6725
原创 RecyclerView调用notifyDataSetChanged后需要滚动一下才刷新数据的问题
原代码如下:JSONObject ret = new JSONObject(event.info());mWifiScanResult = new JSONArray(ret.getString("data"));mRecyclerView.getAdapter().notifyDataSetChanged();其中mWifiScanResult为RecyclerView的数据源,为JSON格式。然而在Android模拟器上执行后并没有刷新数据,需要手动滚动一下才刷新数据。解决方法:不
2021-01-29 14:33:39
3143
3
原创 在Android上使用POI生成word文档时报错Didn‘t find class “androidx.core.app.CoreComponentFactory“
从阿帕奇官网下载的POI最新版(poi-bin-4.1.2-20200217.zip),然而在启动Android程序使用POI时就报错Didn‘t find class “androidx.core.app.CoreComponentFactory“,试了网上的办法都不行,尝试使用老版本的POI(3.9)问题解决。...
2020-12-29 11:06:03
2352
原创 Android for QT使用sqlite,Driver not loaded
QT开发的SQLite访问模块,封装为so,Android通过JNA调用so。QT中在调用 QSqlDatabase::addDatabase后报错(lastError()获取)Driver not loaded。但libplugins_sqldrivers_qsqlite_arm64-v8a.so文件已经打包进apk了(放在libs文件夹下)。然后尝试在QT中先调用QCoreApplication::addLibraryPath添加路径“/data/app/包名/lib/arm64”发现还是不行。
2020-12-16 17:02:05
541
1
原创 QUDPSocket接收信号无法触发问题
QT5.14,Server-Client应用,Server为树莓派,Client为Android设备,代码封装用QT编写封装为soAndroid上点击按钮,调用so发送数据,Server能正常接收数据。Server原路(获取到ip和port)发送给Client响应数据,然而Client就是不触发readyRead信号。解决:在通过udp发送数据的地方,调用waitForReadyRead,问题解决。void SocketTester::sendMessage(QString msg){QNet
2020-12-10 11:40:07
5407
原创 QT for Android 开发动态链接库,信号无法触发问题
用QT 5.14开发Android下的动态链接库so,供Android Studio使用(通过JNA调用)。Qt程序中使用了信号槽机制,然而在手机上运行程序后,信号无法触发。最后在QT文档中发现connect函数:QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionTyp
2020-12-09 17:15:16
590
原创 Qt发布的程序svg图标不显示问题
用Qt5.14开发的软件,软件中用到了很多svg格式的图标,发布后在有些电脑上svg格式的图标不显示,但png格式的图标正常显示,尝试了网上说的:1.在程序路径增加plugins\imageformats,并拷贝Qt安装目录下的imageformats文件夹;2.拷贝Qt安装目录下的Qt5Svg.dll到程序路径;以上方法都没用,所以最后就把svg全转成png图标就OK了,不知道还有没有其他更好的解决方案。...
2020-12-02 10:25:32
3817
5
转载 (转)线程安全(上)--彻底搞懂volatile关键字
https://www.cnblogs.com/kubidemanong/p/9505944.html
2020-01-16 13:10:55
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅