继续记录一些Qt开发中的技巧操作:
1.设置QPA
平台抽象层,用以取代Qt for Embedded Linux以及Qt4中的平台接口。QPA插件通过定义QPlatform开头的一系列类的子类实现,其中有两个根类,QPlatformIntegration和QPlatformTheme,前者用于窗口系统的集成,后者用于更深层次的平台主题化和集成,QStyle不属于QPA。现在很多linux用wayland作为桌面显示,这样会出现一个问题,由于没有坐标系统,导致无边框窗体无法拖动和定位(一般是Qt6开始强制默认优先用wayland,之前Qt5是默认有xcb则优先用xcb),需要在main函数前面加一行 qputenv(“QT_QPA_PLATFORM”, “xcb”);还有其他选择比如“linuxfb”。看你的Linux嵌入式设备平台的支持情况了。
2.打开记忆文件
有时候导出文件后,希望直接打开文件管理器并选中刚才打开的文件,以便用户打开处理,需要通过执行命令来实现。
QString path = "file:///d:/test1.txt";
QProcess::startDetached("explorer.exe", QStringList() << "/select," << path);
3.清除表单页注意判断存在性
在QTreeWidget/QTableWidget的信号currentItemChanged中,执行对应的clear方法也会触发该信号,这就需要特别注意了,对应该信号的两个参数 current/previous 表示当前节点和上一个节点,两个参数的值都为空,所以在该信号对应槽参数处理中,必须先判断该值是否为空指针,不判断的话很可能导致程序崩溃。
4.工程文件去重添加
在qt的工程文件.pro中,我们常常要添加一些模块,比如“QT += core gui”,“QT+= network websockets”这里的 += 其实可以用 *= 更好,+= 表示添加,不会去重,而 *= 是去重添加,存在则不添加。建议用 *=,尽管 += 也能正常使用,毕竟多一个重复的不影响编译器识别,但这样就存在重复添加的可能。
QT += core gui
QT += core gui
message($$QT) //会打印 core gui core gui<