首页| 论坛| 消息

标题:Qt开发经验小技巧266-270
作者:liudianwu
日期:2023-05-22 08:58
内容:

266. 从Qt6.4版本开始多媒体模块提供了ffmpeg作为后端解码使用(6.5版本默认就是ffmpeg),可以通过设置环境变量来更改使用哪种后端解码,在main函数的第一行 qputenv("QT_MEDIA_BACKEND", "ffmpeg"); 目前已知的问题是如果选用ffmpeg则暂时不支持中文目录以及中文名称,如果一定要支持中文则需要改成windows。
```cpp
//设置后端解码为ffmpeg/所有系统都支持
qputenv("QT_MEDIA_BACKEND", "ffmpeg");
//windows系统专用
qputenv("QT_MEDIA_BACKEND", "windows");
//linux系统专用
qputenv("QT_MEDIA_BACKEND", "gstreamer");
//mac系统专用
qputenv("QT_MEDIA_BACKEND", "darwin");
//android系统专用
qputenv("QT_MEDIA_BACKEND", "android");
```
267. 下拉框控件QComboBox默认会根据item的字符宽度调整下拉框的宽度,比如其中某个item文本很长,则下拉框会变的很宽,甚至把整个界面撑大看起来变形的感觉,有时候我们不希望是这样,有多个方法可以去掉,方法一就是设置下拉框的拉伸策略为QSizePolicy::Ignored,然后将下拉框放到一个容器中,保证容器布局中的其他控件都是有固定尺寸或者fix填充尺寸,这样下拉框就是默认自动拉伸的而且保证不会跟着item的宽度变宽。这个方法并不友好,因为需要调整容器布局中其他控件的拉伸策略,最佳方法就是设置 ui->comboBox->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon); ,当item宽度超过的时候中间部分会自动省略号显示,要的就是这个效果,为了使得整个全局都能应用,可以样式表设置 qApp->setStyleSheet("QComboBox{qproperty-sizeAdjustPolicy:AdjustToMinimumContentsLengthWithIcon}"); 即可,整个项目中所有下拉框都会自动应用这个策略。
268. 用QSettings类保存float类型的时候,内容会变成 @Variant 开头的一个值,后面根本看不懂什么值,比如 1.0 = @Variant(\0\0\0\x87?\x80\0\0) 一个非常奇怪的值,这样的话如果想直接修改配置文件来更改参数就无从下手。有两个办法解决问题,办法一就是在写入值的时候强制转换成double类型数据即可,set.setValue("SaveVideoRatio", (double)SaveVideoRatio);,办法二就是将float参数类型改成double,比如 float SaveVideoRatio 改成 double SaveVideoRatio,推荐方法 ..

回复 发表
主题 版块