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);

未完待續

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