Qt界面开发纪实:Qlabel 居中显示图片 Qt中文乱码问题(QT C++ MSVC MinGW )(3)

Qt界面开发纪实:Qlabel 居中显示图片 Qt中文乱码问题(QT C++ MSVC MinGW )(3)

上一篇博客 https://blog.csdn.net/TiffanyXYf/article/details/100131954 中主要介绍了计时器,线程加锁以及throw try catch 差错控制。本篇继续记录采坑事件:由于程序相关的大块操作已经基本完成了,这里可能会更倾向于记录开发过程中遇到的小但是很卡人的问题。

实现等比例显示图片+填充整个Qlabel+图片显示在Qlabel的中央

甲方爸爸对于界面显示的美观程度要求很高,其中一个我认为情有可原但是却不合理的要求就是:要在不同长宽比例的Qlabel里边显示同一张图片,并且要求Qlabel要完全填充,还不能出现图片拉伸

Qlabel显示图片一般有两种方法:1.直接填充显示(图片会出现拉伸),2.等比例显示图片(如果Qlabel的比例与图片本身的长宽比不一致,会出现无法完全填充的情况)
1.例如我们有QImage dstImageshow;在名为label_imageccd1的Qlabel中完全填充可以调用如下语句
ui->label_imageccd1->setPixmap(QPixmap::fromImage(dstImageshow).scaled(ui->label_imageccd1->size()));
2.而等比例显示图片则:多加一句:Qt::KeepAspectRatio
ui->label_imageccd1->setPixmap(QPixmap::fromImage(dstImageshow).scaled(ui->label_imageccd1->size(),Qt::KeepAspectRatio));

为了实现等比例填充,我采取的办法是稍微放大图片,然后采取第二种保持图片长宽比的方法进行显示
也就是:
ui->label_imageccd1->setPixmap(QPixmap::fromImage(dstImageshow).scaled(
ui->label_imageccd1->size().width(),
ui->label_imageccd1->size().height()*1.1
, Qt::KeepAspectRatio));
如果显示图片的时候出现右边Qlabel没有被填满,则说明是图片的不够高,所以在缩放图片的时候稍微把高设置高一点,图片就会被稍微放大一些,这样再填充的时候就能够实现等比例完全填充了。
实现图片在Qlabel的中间显示:在上面显示那一句之前加上:
ui->label_imageccd4->setAlignment(Qt::AlignCenter);
显示效果如下:
在这里插入图片描述

Qlabel中显示中文,编译器报错(常量中有换行符)

在这里插入图片描述
在这里插入图片描述
文件编码问题:网上说可以改变文件的编码方式,我试了,没用。
后来发现:
5个字报错,6个字就好了,4个字也可以通过。很迷,所以显示的时候,我选择了需要中文的时候都显示6个字,或者偶数个字。
上述编码问题可以通过Qstring自带的函数fromLocal18Bit()得到结局调用方式如下:

char buf_downFrame[100];
sprintf(buf_downFrame, "(0) 上框 ");
QString strInfo = QString::fromLocal8Bit(buf_downFrame);
ui->label_downFrame->setText(strInfo);

未完待续

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章