Qt开发经验小技巧206-210

2022-04-14  本文已影响0人  feiyangqingyun
  1. 有时候需要对文本进行分散对齐显示,相当于无论文字多少,尽可能占满整个空间平摊占位宽度,但是在对支持对齐方式的控件比如QLabel调用 setAlignment(Qt::AlignJustify | Qt::AlignVCenter) 设置分散对齐会发现没有任何效果,这个时候就要考虑另外的方式比如通过控制字体的间距来实现分散对齐效果。
QString text = "测试分散对齐内容";
//计算当前文本在当前字体下占用的宽度
QFont font = ui->label->font();
int textWidth = ui->label->fontMetrics().width(text);
//显示文本的区域宽度=标签的宽度-两边的边距
int width = ui->label->width() - 12;
//需要-1相当于中间有几个间隔
int count = text.count() - 1;
//计算每个间距多少
qreal space = qreal(width - textWidth) / count;
//设置固定间距
font.setLetterSpacing(QFont::AbsoluteSpacing, space);
ui->label->setFont(font);
ui->label->setText(text);
  1. 随着需求的不断增加,程序不断变大,用到的动态库也越来越多,到了发布程序的时候你会发现和可执行文件同一目录下文件数量真多,此时可能会考虑如何将一些库文件分门别类的存放,这样方便管理。
  1. 进度条控件如果设置的垂直方向,就算你设置了文本可见,会发现根本看不到进度文本,经过多方百折不挠的试探,以及和酷码大佬深入的探讨,发现只要设置下border样式(border:1px solid #ff0000、border:none、border-style:solid、border-radius:0px 任意一种)就行,就可以把文本显示出来,这TM就不知道Qt为什么总是不统一规则,这个BUG通用于任何版本,这个可能是因为边框的solid样式冲突了导致无法继续绘制,确切的说这必须是BUG,这个锅Qt必须背。

  2. 我们在使用QFileDialog::getOpenFileName、QFileDialog::getExistingDirectory等方法时,有时候会发现首次打开很卡,尤其是在默认目录很多文件的时候,此时你可以考虑设置这些函数最末尾的参数为QFileDialog::DontUseNativeDialog,表示不采用本地系统对话框,这样的话会采用Qt的对话框,速度快很多,估计系统的对话框在打开的时候会做很多初始化加载处理。

QFileDialog::getOpenFileName(this, "", "", "", 0, QFileDialog::DontUseNativeDialog);
QFileDialog::getExistingDirectory(this, "", "", QFileDialog::DontUseNativeDialog);
  1. 滑块控件QSlider,如果设置的垂直样式,其进度颜色和剩余颜色,刚好和横向样式的颜色相反的,不确定这个是否是Qt的BUG,Qt456都是这个现象。
QSlider::groove:horizontal{
height:8px;
background:#FF0000;
}

QSlider::add-page:horizontal{
height:8px;
background:#FF0000;
}

QSlider::sub-page:horizontal{
height:8px;
background:#00FF00;
}

QSlider::handle:horizontal{
width:10px;
background:#0000FF;
}

QSlider::groove:vertical{
width:8px;
background:#FF0000;
}

QSlider::add-page:vertical{
width:8px;
background:#00FF00;
}

QSlider::sub-page:vertical{
width:8px;
background:#FF0000;
}

QSlider::handle:vertical{
height:10px;
background:#0000FF;
}
上一篇下一篇

猜你喜欢

热点阅读