新潮技术研究社
这个作者很懒,什么都没留下…
展开
-
cmake语法target_link_libraries private,public,interface解读
`${PDAL_ARBITER_LIB_NAME}`:PDAL Arbitrer 库的名称。- `${PDAL_KAZHDAN_LIB_NAME}`:PDAL Kazhdan 库的名称。- `${PDAL_LAZPERF_LIB_NAME}`:PDAL Lazperf 库的名称。- `${CMAKE_DL_LIBS}`:CMake 提供的用于动态加载库文件的库文件。- `${PDAL_LEPCC_LIB_NAME}`:PDAL Lepcc 库的名称。原创 2023-11-25 20:17:17 · 743 阅读 · 0 评论 -
qt qml中listview出现卡顿情况时的常用处理方法
4. 使用模型的onCountChanged信号:如果数据模型在更新时需要进行复杂的计算,可以使用模型的onCountChanged信号,将计算过程放到后台线程中,避免阻塞主线程。3. 使用较小的itemDelegate:尽量减少itemDelegate的复杂度,例如使用较小的图片或者使用ListView的内置的默认itemDelegate。6. 优化数据源:如果使用的是自定义的数据源模型,可以优化模型中的数据处理方法,尽量减少不必要的计算。原创 2023-10-06 22:54:11 · 734 阅读 · 0 评论 -
qt qml RadioButton如何设置字体颜色,style提示找不到怎么办?
在这个例子中,我们创建了一个RadioButton,并设置了其文本为"Radio Button"。通过设置RadioButton的label属性为Text元素,我们可以对文本进行更多的样式设置。通过设置Text元素的color属性,我们可以设置文本的字体颜色。在这里,我们将字体颜色设置为红色。所以我们可以按照上面的代码,使用Controls 1.4的RadioButton组件。qt QML中设置RadioButton的字体颜色,可以使用RadioButton的label属性来设置文本的样式。原创 2023-09-12 13:29:28 · 886 阅读 · 0 评论 -
qt中setFixedSize和resize的区别,半悬浮效果的实现
1. `setFixedSize()`方法会将窗口的大小固定为指定的宽度和高度,不允许用户手动调整窗口大小。这个方法通常用于需要固定大小的窗口,例如自定义的对话框或固定大小的小部件。那么当你使用resize的时候,如果背景widget的大小固定了,而这上面的子控件大小你没有固定,即用的是resize,而不是setfixedsize,那么子控件不受背景widget的控制,所以就会出现子控件能够溢出背景widget的现象。这个方法通常用于可调整大小的窗口,例如主窗口或应用程序窗口。原创 2023-09-02 12:04:41 · 1962 阅读 · 0 评论 -
Qt qml中Row组件内的边距如何设置
在这个示例中,我们使用Row组件创建了一个横向布局,通过设置spacing属性来定义按钮之间的间距。然后,我们在每个按钮中使用leftPadding和rightPadding属性来定义左右边距的大小。qml中Row组件,和RowLayout组件,两者的用法是有区别的。我们可以使用边距属性padding来设置边距。原创 2023-08-29 13:16:08 · 420 阅读 · 0 评论 -
Qt OpenGL基础入门,怎样将像素绘制到屏幕上,附代码例子
请确保在CMakeLists.txt文件中的`add_executable`命令中包含您的源文件,例如`main.cpp`。然后,使用`target_link_libraries`命令将OpenGL库链接到您的项目中。通过这样配置CMakeLists.txt文件,CMake将能够找到并链接OpenGL库,以便您的项目能够使用OpenGL功能。要在CMake中添加OpenGL库路径,您可以使用`find_package`命令来查找OpenGL库,OpenGL最近比较火,我们也来一起学习学习吧。原创 2023-08-14 10:20:27 · 202 阅读 · 0 评论 -
qt lamda表达式及捕获变量列表符号说明及示例
在上面的例子中,Lambda表达式lambda1以值传递的方式捕获了变量x和y,而lambda2以引用传递的方式捕获了变量x和y。其中,捕获列表(capture list)可以用来捕获外部变量,参数列表用于指定函数的参数,返回类型用于指定函数的返回类型,函数体则是具体的实现。3. [&]:以引用传递的方式捕获所有的外部变量,使Lambda表达式内部可以访问外部变量的值,并且可以修改它们。2. [=]:以值传递的方式捕获所有的外部变量,使Lambda表达式内部可以访问外部变量的值,但不能修改它们。原创 2023-08-10 14:20:32 · 494 阅读 · 0 评论 -
qt qml中各种Layout之间是如何对齐的?
然后,在下一个RowLayout中使用anchors属性,将其顶部锚定到上方ColumnLayout的底部。同时,通过设置y偏移量来实现略低一些的位置。要实现将下一个RowLayout对齐到上方的ColumnLayout的底部,并添加一些间距,可以使用anchors属性和布局元素的spacing属性。这样,下一个RowLayout就会相对于上方ColumnLayout的底部略低一些,并添加了指定的间隔。qml中下一个RowLayout如何对齐顶部到上方的ColumnLayout的底部略低一些间隔的位置?原创 2023-08-08 10:19:30 · 722 阅读 · 0 评论 -
Qt小妙招:如何在可执行文件生成后,在pro文件中添加其他命令操作?
场景1:我的可执行文件设置生成路径为某个最终目录的bin目录下,当我要修改某些config.ini或者xxx.json,或者一些qss,css文件的时候,我想直接在构建的时候,Qtcreator帮我直接拷贝过去,而不需要我总是执行命令去复制。`$$PWD/source_file`是源文件的路径,`$$OUT_PWD/destination_file`是目标文件的路径。在Qt的.pro文件中,使用QMAKE_POST_LINK变量来在生成可执行文件后执行一条复制文件的命令操作。其他场景大家自己想象。原创 2023-07-26 14:55:13 · 624 阅读 · 0 评论 -
Linux下C++ STL获取Mac地址
注意,这个代码假设你的网络接口是eth0。如果你的网络接口不是eth0,你需要相应地更改文件路径。或者直接用QtCreator创建C++项目。原创 2023-07-26 09:58:50 · 844 阅读 · 0 评论 -
Qt中字符串比较的时候如何忽略大小写?
当我要比较电脑的MAC地址的时候,出现了使用ifconfig查看到的地址,和Qt使用QNetInterface获取的MAC地址有着大小写的区别。可以使用QString类的compare()函数,并将第三个参数设置为Qt::CaseInsensitive。可以使用QString类的toLower()函数来将字符串转换为小写形式,然后再进行比较。原创 2023-07-26 09:17:23 · 671 阅读 · 0 评论 -
Qt应用程序性能优化总结
6. 使用Qt的绘图优化技巧:在进行图形绘制时,可以使用Qt的一些绘图优化技巧来提高性能。5. 使用Qt的多线程机制:对于需要进行耗时操作的任务,可以考虑使用Qt的多线程机制来提高性能。4. 减少信号与槽的连接:信号与槽机制是Qt的核心特性之一,但过多的信号与槽连接会导致性能下降。7. 使用Qt的缓存机制:在处理大量数据时,可以使用Qt的缓存机制来优化性能。9. 使用Qt的性能工具:Qt提供了一些性能工具,如Qt Creator的CPU和内存分析器,可以帮助发现和解决性能瓶颈。原创 2023-07-12 09:41:04 · 2003 阅读 · 0 评论 -
Qt中QProcess的全局对象可以重复使用吗?
但是需要注意的是,在每次使用QProcess对象执行外部程序之前,您应该确保之前的执行已经完成或已经终止。可以通过调用`waitForFinished()`函数来等待之前的执行完成,或者调用`kill()`函数来终止之前的执行。实际上,我看到有些人在写某些命令的执行时,经常重复使用。另外,如果您要执行多个外部程序,并且希望并行执行它们,可以考虑使用多个QProcess对象,每个对象负责执行一个外部程序。总结起来,QProcess对象是可以重复使用的,但在每次使用之前,需要确保之前的执行已经完成或已经终止。原创 2023-07-12 09:35:14 · 514 阅读 · 0 评论 -
Qt QSqlTableModel获取数据库总的行数,当数据库行数超过10000行,怎么办
前面提到过,使用QSqlTableModel的canFetchMore()来获取超过256行的数据库数据行数,但是中间使用过程中,发现这个会导致界面卡顿。为了解决这个问题,可以使用QSqlQuery来执行查询并获取总行数。注意里面的QSqlQuery的定义,可以没有database参数,定义的时候会选择默认的数据库database,即你之前已经连接好的QSqlDatabase。当数据量过大,且处于数据通信过程中的时候,譬如,can通信,串口,TCP网络之类的时候,我们需要直接查询数据库获取总行数。原创 2023-07-10 18:22:44 · 838 阅读 · 0 评论 -
解决Qt字体问题:QFontDatabase: Cannot find font directory xx/lib/fonts
1.直接在main函数里设置app的整体字体库.这个错误提示比较明显的就是字体库缺失。原创 2023-07-05 14:31:34 · 1660 阅读 · 0 评论 -
C++/Qt中异常处理try-catch语句的使用方式及场景案例
然而,使用省略号来捕获异常是不推荐的,因为它会捕获所有类型的异常,包括标准异常和非标准异常,导致代码的可读性和调试能力降低。最佳实践是将具体的异常类型作为catch块的参数,以便更精确地处理不同类型的异常。如果在这些代码执行过程中发生了异常,程序会立即跳转到最近的catch块,并执行相应的异常处理代码。catch块中的参数是异常对象的引用,可以用来访问异常的信息。总之,try-catch语句适用于任何可能会抛出异常的场景,可以提供对异常情况的处理和恢复机制,保证程序的稳定性和可靠性。// 读取或写入文件。原创 2023-07-04 10:08:49 · 4704 阅读 · 0 评论 -
解决Ubuntu20arm系统下执行Qt程序Could not initialize GLX
看到GLX的问题,其实第一时间就想到或许是opengl的某些驱动有问题。所以,我们可以直接搜索跟opengl相关的依赖包,开发包dev包。或者执行sudo apt-get install mesa-utils安装opengl的各种驱动。如果还不行,那么你需要安装和qt5相关的opengl包:自行查看选择即可。原创 2023-06-12 11:45:22 · 1404 阅读 · 0 评论 -
解决Ubuntu18 系统下不兼容软件包存在未满足的依赖关系: libudev-dev : 依赖: libudev1 (= 237-3ubuntu10.57) but is installed
我们需要回答No,让aptitude给出第二个方案,仔细查看第二个方案,一般会建议你降级某个关键的卡壳依赖包,看好了要不要降级,一般不会有升级的情况,因为如果升级就能解决问题,apt直接就可以安装了。因为aptitude会给出解决方案,会自动分析依赖包的合理安装版本,会帮助你分析依赖包出现的安装问题。只要那些阻碍的依赖包问题解决了,那么安装我们需要安装的一般性软件包依赖包的时候,才能够顺利。0 个软件包被升级,新安装 4 个, 2 个被降级, 0 个将被删除, 同时 211 个将不升级。原创 2023-06-12 11:14:46 · 1043 阅读 · 0 评论 -
QtCreator添加代码统计功能
最后,我们就可以直接点一下,工具---外部----cloc,底下“概要信息”栏目就会出现代码统计的结果了。QtCreator有一个很好用的外部命令功能:在工具下面,有个外部的菜单项,点进入配置一下,就可以实现很多需要操作当前目录,编译目录等各种环境变量下具备操作的功能。Ubuntu上有一个很好用的命令行工具cloc,可以统计各种目录下的代码行数,很是方便,参数就是目录名,需要排除某个目录,就加一个exclude参数。需要说明的是:工作目录的选择,上面有自带的变量,无需自己创造哈。原创 2023-06-05 17:58:56 · 1796 阅读 · 0 评论 -
解决QT5调用软键盘qvirtualkeyboard时崩溃问题ime_pinyin::MatrixSearch::init_user_dictionary
但是偶尔也会出现问题,譬如,我这边在Arm系统上跑着程序的时候,点击用户编辑框,输入法弹出,但是再次点击密码输入框,连程序都给我崩溃了。只是提示错误:void ime_pinyin::MatrixSearch::init_user_dictionary。首先确保你的Arm版QT库已经编译了软键盘,位置有时候就和lib同级目录,qtvirtualkeyboard。QT5中的软键盘qvirtualkeyboard很好用,很多人开发嵌入式端应用的时候都会用到。此外还有很多其他的输入法字典,像。原创 2023-06-02 16:17:59 · 1021 阅读 · 0 评论 -
Qt QGenericPlugin插件使用案例
首先,我们通过QtCreator,创建新的项目,选择C++ library模板,然后,选择Qt Plugin,不是C++ library。我们无需单独再创建接口类,如果你有需要可以继续继承或者另外写一个接口类。Qt插件的编写,有两种方式,一种是直接通过自定义接口类Interface来实现,一种是通过QtCreator自带的插件模板来创建。如果你是自己另外创建的接口类,需要修改一下基类对象调用的create方法那一行即可。案例具体代码放在我的资源里了,免积分的,有需要的自己下载吧。这里我们先来实现第二种。原创 2023-05-23 11:27:37 · 491 阅读 · 0 评论 -
解决Windows下QtCreator编译代码时错误:cc1plus.exe: out of memory allocating 65536 bytes
综上所述,增加编译器的线程数通常会导致内存的增加。但是,线程数增加带来的内存增加量并不是固定的,实际增加量取决于编译器的实现、系统硬件等因素。当线程数增加时,因为线程间通信的开销增加,会导致程序的内存使用量增加。随着线程数的增加,内存分配算法的复杂度也会增加,可能需要更多的内存来存储分配器状态。例如,使用迭代替换递归可以减少栈的内存使用。增加线程数将增加线程栈空间的数量,从而增加内存的使用量。在编译一些大的Qt程序代码的时候(其他程序也类似),由于系统里面打开的其他程序多,耗费内存比较大。原创 2023-04-28 12:40:44 · 1621 阅读 · 0 评论 -
翻翻源码,解决Qt程序问题QLayout: Attempting to add QLayout ““ to xxxx ““, which already has a layout
其他Layout对象如果new的时候指定了父窗口的this作为parent,中间你却在子Widget中setLayout(xxlayout对象),那么Qt就会警告你,父窗口已经有主Layout了,你的代码中还尝试添加一个或多个主Layout,因为这些Layout的this指向了父窗口,但你却用在子窗口上去了。那么结论来了,既然出现错误(警告)之后,Qt框架自身会设置对象的parent为空,也就是说,在我们的代码中,某个地方将layout的parent设置成了别的对象,或是this,或是对象指针。原创 2023-04-26 19:07:19 · 166 阅读 · 0 评论 -
Qt中Pri模块管理头文件使用总结
问题描述:查了一下,发现我没有记录下这个Pri文件的使用方法。以前写过,不知道是放在公众号上了,还是放到哪个博客上去了。今天浏览到一篇文章,说了一堆大小项目中可以使用pri文件的观点。也没啥用,就记录了一下他的个人看法,没提到使用方式。所以,这里我补充....或者说纠正一下也行。个人经验,不喜尽情喷。解决办法:所谓pri文件,就是project include的意思,翻译成中文,就是工程包含,实际上就是用在Pro文件中的工程头文件。Pro文件大家都知道,project的意思。原创 2023-04-23 16:07:42 · 442 阅读 · 0 评论 -
解决Qt程序出错stack smashing detected,gdb调试总结
上述问题,引出了我们在Qt程序,不仅仅Qt,C/C++程序都是,如果有不知名的错误产生,或者程序内部栈,内存分配之类的问题,可以使用gdb进行调试。栈被破坏的问题,一般出现在函数的变量之中,单一类型的变量比较简单,基本上不会出错,所以一般还是主要查buffer数组之类的地方。项目上有一个Qt程序,之前在arm32位编译器下编译是好好的,运行也非常顺畅,完全没有出现过错误。如果没法用网络,那么,你就只能一步一步从界面,或数据,或日志,最后挂掉前的位置往前推理。操作各项功能,尤其是最后出现死机现象的那一项。原创 2023-04-20 18:08:18 · 1173 阅读 · 0 评论 -
解决Qt QSqlTableModel获取sqlite数据库全部行数rowCount最大256的问题的两种方法
最近在项目中用到了QSqlTableModel,table表格展示数据,model存放数据,结果使用rowCount()函数获取全部数据行数的时候,竟然只能最大是256,以前从来没听说还有这个操作。不过,事实上,官方文档没讲清楚,给定的那句while循环无法生效,问题在哪呢?意思就是,出了while循环,记录就丢了,也就是说,我们需要在while循环里去使用rowCount(),才能持续获取最大行数。大部分人使用的代码估计都是以下这个,当数据量少的时候,这个代码是没问题的,但是数据量一多,就不行了。原创 2023-04-20 11:13:12 · 1042 阅读 · 0 评论 -
Qt如何安装及使用表格插件QtXlsxWriter
在命令提示符中,cd到这个源码包的目录下,然后执行qmake,然后mingw32-make,mingw32-make install即可。2.Ubuntu或Linux下,在源码包目录下,直接qmake(前提是你已经安装了Qt),make,make install。也可以直接通过命令提示符把Qt安装目录下的qmake,mingw32-make的路径整个输入执行。解压源码包之后,我们看到如下代码结构,有example例子,很丰富,有pro工程文件。具体操作Excel,大家可以查看文档,或者example。原创 2023-03-28 11:07:20 · 950 阅读 · 0 评论 -
从Qt源码中学习类设计之QSplash源码分析
Java,Python,Web语言,Go等等,都有它们各自擅长的领域。而Qt擅长客户端领域,主要是桌面,嵌入式设备,移动设备等。很多时候,类的头文件中,掺杂着各种变量和函数,混合一起,确实很难看,也比较难以扩展维护。QSplashScreen是Qt类中的程序启动界面类,继承自QWdiget类,也就是说它是一个控件,不过按照官方给的示例代码,这个类似乎不怎么好用。这里就不按照先抽象类,根类,模块类这些顺序去分析了,那样子比较正规,写起来需要很多时间。Qt在设计类的时候,都是以数据类和实现类分离的模式。原创 2023-03-17 17:14:06 · 991 阅读 · 0 评论 -
Qt QProcess管道命令带“|”多命令执行获取stdout输出问题总结
在Qt中,使用system和QProcess执行命令,system执行的命令,我们通常不需要获取stdout的输出结果,所以只需要得到返回结果,知道成功失败即可。执行单个命令,管道命令,都是可以的,但是,得区分命令的类型。但是这种方式有个弊端,那就是vmstat后面的参数给掐掉了,于是返回的结果需要你继续再处理一下。这里的返回信息只要是标准输出的即可,当然了,也可以是别的channel,只不过俺未曾见过。嗯,我还可加了个awk命令来获取输出结果的某个列的数据。这时候,返回的结果就是空的了。原创 2023-03-17 14:41:56 · 1533 阅读 · 0 评论 -
Qt给纯C++类添加UI界面文件项目示例:定时截图工具
前面写过一篇文章,叫做Qt里面单独类的ui界面文件的添加方式,有两种,一种是手动添加ui相关界面代码,一种是加载ui文件。这里举个栗子。以Qt案例的截图工具来说吧,正好这个项目示例是没有ui文件的。而我正需要定时截图工具,这个项目里面没有。但它有截图功能。原创 2023-03-14 15:13:14 · 473 阅读 · 0 评论 -
Qt单个类加载独立界面文件ui的两种方式
而因为uic生成ui类的时候,自动地将我们原先的类名定义为ui类的继承者,然后使用namespace命名空间将其隔离,所以,我们看到QtCreator自动生成的界面指针使用了Ui::MainWindow来定义,名字看似和原本的C++类是同名的,其实是uic为了方便或者为了命名保护也好,造成的现象。上面就是标准的界面类创建时的文件。(只不过,在一个类里面堆叠一堆UI界面,老实说,正常的开发是不合适的,只有在你想偷懒,或者看到别人做好的华丽的界面比较复杂的情况下,这样做是比较合适的,其他场景我暂时也没有想到。原创 2023-03-12 17:50:38 · 860 阅读 · 0 评论 -
Qt如何让程序启动时窗口显示在屏幕中央?
一般来说,X86系统下,Qt程序启动时都会自动在屏幕中间显示的。只不过凡事都有例外,偶尔你不知道设置了什么,程序窗口就偏离了中央位置。让程序窗口显示在屏幕中央,需要让窗口移动。所谓窗口移动,实际上是将窗口的左上角的点移动到对应的坐标点,它的位置就是这个坐标。原创 2023-03-06 11:05:57 · 2947 阅读 · 0 评论 -
Qt智能指针模板类的使用方式和区别总结
这意味着 QExplicitlySharedDataPointers 的行为类似于常规的 C++ 指针,除了通过执行引用计数并且在引用计数为 0 之前不删除共享数据对象,它们避免了悬空指针问题。QPointer 有一个严重的缺陷:它让你知道对象是否已被删除,但它不能保证下一行代码中,多线程下,创建的QPointer对象是否已经被删除。它具有您在现代指针类中可能需要的所有功能:它是多态的,它支持静态、常量和动态转换,它实现原子引用计数和线程安全语义,它支持自定义删除器。原创 2023-02-23 17:23:16 · 649 阅读 · 0 评论 -
Qt控件样式表id选择器设置及动态属性样式案例总结
1.设置程序中所有指定类型控件的背景色:(如QLineEdit)2.设置对话框或者窗口中某个指定类型控件的样式:(如QLineEdit及其子类)3.如果我们希望该属性仅应用于一个特定的QLineEdit ,我们可以使用QObject::setObjectName ()为其命名并使用 ID 选择器来引用它:4.直接使用对象名设置background-color属性,省略选择器:设置字体颜色:设置选中文本的背景颜色:");使用动态属性进行自定义。原创 2023-02-17 12:35:06 · 800 阅读 · 0 评论 -
解决Qt提示xxx.so not found( using -rpath or -rpath-link)问题
上述问题虽然说的很明白,try using -rpath or -rpath-link,要使用rpath指定so动态库的位置。可是,在QtCreator里面,我上哪去指定so的位置呢?这里so文件可以通过源码编译或者直接下载的方式搞到。我这里是aarch64,其他环境类似即可。可以在项目的编译参数里面加入。但这样子,似乎不够通用。原创 2023-02-16 09:34:26 · 801 阅读 · 0 评论 -
Qt5.8以下版本在Ubuntu64位系统下交叉编译arm32位版本
如果你是5.8以下的版本,那么就只能编译arm32位的版本了,当然了,你也可以自己研究以下64位的编译,参考5.8的64位补充mkspec,在qt git上下载5.8或者以上版本的64位qtbase/mkspec下的linux-aarch64目录。对于缺少某个依赖包的问题,下载对应依赖包的时候需要加上:i386,不然在Ubuntu64位系统下,譬如18.04下,默认下载的是64位包。但是如果你下载的是source包,那么里面是没有这个64位的mkspec的目录的。没什么特殊情况,还是建议直接用高版本吧。原创 2022-12-23 15:35:38 · 662 阅读 · 0 评论 -
Qt5/6操作WiFi之Linux下wifi操作完整流程命令(nmcli命令)
之前写过一个非nmcli的版本,因为那个版本环境不是Ubuntu系统,而如果我们是在Ubuntu系统下,当然其他版本Linux也一样的。我们可以使用nmcli来操作wifi。这里使用了文本文件,便于后面解析出来ESSID列表,因为iwlist产生的结果比较复杂,所以需要提取需求信息。如果你是定义了一个QString,contains判断的时候,可以加上Qt::CaseSensitive。也可以使用$sudo nmcli dev wifi。3.扫描wifi热点。5.断开连接wifi。原创 2022-12-12 11:01:52 · 1293 阅读 · 0 评论 -
Linux/Ubuntu直接使用ssh远程启动带界面程序
之前一直觉得ssh远程启动程序,只能是无界面的字符模式程序,一贯的固定思维导致我当时各种查找远程桌面连接,远程桌面控制,后来用了vnc,putty,折腾了好一番,最终,最近却回到了起点。着实心累,有时候你不知道真的就是连想都想不到。原来ssh远程连接的时候,是可以直接启动gui带界面的程序的。不过需要配置一番,且看下文分解。只需在/etc/ssh/ssh_config文件中修改以下几项。或者有的是/etc/ssh/sshd_config文件:然后重启ssh服务:当然了,还有一个更加方便的做原创 2022-12-05 11:09:37 · 1566 阅读 · 0 评论 -
Qt5/6操作WiFi之Linux下wifi操作完整流程命令(非nmcli)
【代码】Qt5操作WiFi之Linux下wifi操作完整流程命令(非nmcli)原创 2022-12-02 16:40:46 · 1196 阅读 · 0 评论 -
Qt代码如何使用QPointer替换普通指针,让代码更舒服?
然后调用delete去清除前面所分配的指针,delete会调用该类的析构函数,最后再赋予null或者0,这样在重复利用该指针变量的时候可以判空,可以不用担心segment error。当然了,你自己创建的类,不继承QObject当然不行。C++中有智能指针,至于还有诸多指针类型,QSharedPointer(多用在指针数组),我就不讨论了,用得少,其实原理都是一样的。5.使用时,如果是调用QPointer本身的函数,可以直接用点或者指针都行,但是如果是模板类T的函数,需要用指针指向符号->。原创 2022-11-09 18:45:26 · 768 阅读 · 0 评论