标题:Qt/C++开发经验小技巧291-295
作者:liudianwu
日期:2023-12-19 11:40
内容:
国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
291. 关于在pro中区分linux系统,在Qt4套件是不认识 linux 标记的,需要用 unix:!macx 表示。所以如果有兼容Qt4的需求,建议用 unix:!macx 表示。
```cpp
//如果是linux上的Qt4套件则下面只会打印 unix linux
//如果是linux上的Qt5/Qt6套件则下面会打印 linux unix linux
linux {message(linux)}
unix {message(unix)}
unix:!macx {message(linux)}
```
292. 对于一些跨平台的项目,尤其是需要引入第三方库,需要根据不同的系统不同的位数引入对应文件夹中的库文件,这就需要项目中去识别处理。
```cpp
#区分不同的系统
path_sys = win
win32 {
path_sys = win
}
linux {
path_sys = linux
}
#Qt4套件不认识linux标记
unix:!macx {
path_sys = linux
}
macx {
path_sys = mac
}
android {
path_sys = android
}
#区分不同的位数 x86_64/amd64/arm64/arm64-v8a
path_bit = 32
contains(QT_ARCH, x.*64) {
path_bit = 64
} else:contains(QT_ARCH, a.*64) {
path_bit = 64
} else:contains(QT_ARCH, a.*64.*) {
path_bit = 64
}
#对应系统和位数的库目录
path_lib = lib$$path_sys$$path_bit
//下面会打印 libwin32/libwin64/liblinux32/liblinux64/libmac32/libmac64/libandroid32/libandroid64
message($$path_lib)
//使用方式
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/$$path_lib/ -lxxx
```
293. 当检测到某些qt构建环境不满足当前项目要求,避免项目编译失败,可以禁用项目。
```cpp
#禁用项目后整个项目的代码文件是灰色的不可用,编译会跳过。
lessThan(QT_MAJOR_VERSION, 6) {
error("最低要求Qt6才能用")
}
```
294. 在使用QButtonGroup按钮组添加按钮的时候,如果需要使用buttonClicked(int)信号,则添加按钮的时候必须手动指定按钮编号,否则默认编号都是-1,这样在触发buttonClicked(int)的时候值是负数,导致和预期不一致,原本以为默认按照添加按钮的顺序自动递增设置索引,其实不是的,不会这样处理。务必记得指定按钮编号。
```cpp
QButtonGroup *btnGroup = new QButtonGroup(this);
connect(btnGroup, SIGNAL(buttonClicked(int)), ui->stackedWidget, SLOT(setCurrentIndex(int)));
//第二个参数指定按钮 ..