网站首页 > 知识剖析 正文
国内站点:[
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)));
//第二个参数指定按钮编号
btnGroup->addButton(ui->btn1, 0);
btnGroup->addButton(ui->btn2, 1);
```
295. 关于QCustomplot绘图性能的改善。
- 尽量避免笔宽度大于1的线,默认是1,如果绘制的数据量很大,强烈不建议设置线条宽度大于1,性能会大大降低。
- 避免复杂的填充,例如在具有数千个点的图形之间进行通道填充。
- 在图表拖动期间,可以设置 setNoAntialiasingOnDrag(true),可以提高响应速度。
- 避免使用任何类型的alpha(透明)颜色,尤其是在填充中。
- 尽量不要开启抗锯齿,setNotAntialiasedElements(true)。
- 避免重复设置完整的数据集,例如使用setData。如果大多数数据点保持不变,例如在运行的测量中,请改用addData。
- 推荐通过QCPGraph::data()访问和操作现有数据,效率更高。
- 开启opengl加速,第一步,开启标记,在pro中加上一行 DEFINES += QCUSTOMPLOT_USE_OPENGL 。第二步,链接opengl库,LIBS += -lopengl32 -lglu32 。有些Qt版本还可能需要主动引入 QT += widgets。经过实测发现,高频率的绘制比如60fps在开启opengl有性能提升,主要是降低了CPU占用。低频率的绘制还增加了CPU占用。所以建议根据实际场景来处理。这个和数据量好像无关,和绘制数据速度有关。
- 画布关闭抗锯齿属性,graph->setAntialiased(false) graph->setAntialiasedFill(false) graph->setAntialiasedScatters(false) 。默认是true。
- 画布开启自适应采样,graph->setAdaptiveSampling(true)。默认是true,所以不用主动设置。
猜你喜欢
- 2025-05-27 Trump lies about 'fair' and 'balanced' trade
- 2025-05-27 英雄联盟:万人投票选择最讨厌的英雄 亚索居然不是总票数第一
- 2025-05-27 我们怎么样使用Python实现一个简单画图软件界面
- 2025-05-27 大家都喜欢的2B小姐姐,背后的故事是这样的
- 2025-05-27 ASEAN best served by strategic autonomy
- 2025-05-27 吉村Yoshimura迎来70周年,推出一系列全新改装零件迈入新时代
- 2025-05-27 每个flutter开发人员都要知道的16个dart技巧
- 2025-05-27 如何使用HTML5实现拖放单个元素
- 2025-05-27 将最新Chromium浏览器集成到.NET应用程序中
- 2025-05-27 轻松解除网页被限制复制功能
- 05-27Trump lies about 'fair' and 'balanced' trade
- 05-27英雄联盟:万人投票选择最讨厌的英雄 亚索居然不是总票数第一
- 05-27我们怎么样使用Python实现一个简单画图软件界面
- 05-27大家都喜欢的2B小姐姐,背后的故事是这样的
- 05-27ASEAN best served by strategic autonomy
- 05-27Qt/C++开发经验小技巧291-295
- 05-27吉村Yoshimura迎来70周年,推出一系列全新改装零件迈入新时代
- 05-27每个flutter开发人员都要知道的16个dart技巧
- 最近发表
-
- Trump lies about 'fair' and 'balanced' trade
- 英雄联盟:万人投票选择最讨厌的英雄 亚索居然不是总票数第一
- 我们怎么样使用Python实现一个简单画图软件界面
- 大家都喜欢的2B小姐姐,背后的故事是这样的
- ASEAN best served by strategic autonomy
- Qt/C++开发经验小技巧291-295
- 吉村Yoshimura迎来70周年,推出一系列全新改装零件迈入新时代
- 每个flutter开发人员都要知道的16个dart技巧
- 如何使用HTML5实现拖放单个元素
- 将最新Chromium浏览器集成到.NET应用程序中
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)