วันพฤหัสบดีที่ 12 กรกฎาคม พ.ศ. 2561

qt load font

เนื่องจากลูกค้าต้องการให้ใช้ font สวยๆ ตามที่เขาต้องการ จึงต้องทำการ load font ขึ้นมาใช้
ในตอนแรกเขียน code แบบนี้
QFont myFont("font1name", 30);
ซึ่งก็ใช้ได้ผลดี ในตอนทดสอบ, โดยการเรียกจาก Terminal (./myApp -platform xcb)
แต่... หลังจากที่ทดลอง restart rpi แล้ว และโปรแกรมถูกเรียกโดยสคริปท์ autorun ปรากฎว่า font ที่เราโหลดไว้ ไม่ยอมแสดง, แสดงเป็น font อื่นซะงั้น
จึงได้ไปลอง post ถามในกลุ่ม raspberry pi thailand ดู ซึ่งก็ได้คนใจดี มาช่วยตอบคำถามให้ โดยบอกว่าให้ลองใช้ QFontDatabase และ copy font ไปไว้ใน folder เดียวกันกับ Application ของเรา
ก็เลยไปค้นหาดูว่า QFontDatabase เขาใช้กันยังไง ก็ได้มาแบบนี้

#include <QFontDatabase>
.
.
.
QString myFont;
int loadedFontID = QFontDatabase::addApplicationFont("./fontFile.ttf");
QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID);
if(!loadedFontFamilies.empty())
  myFont = loadedFontFamilies.at(0);

QFont P(myFont, 90, QFont::Normal, false);

myLabel->setFont(P);

ก็ลองทดสอบ reboot ดู Font ก็แสดงออกมาได้อย่างถูกต้อง

ต้องขอขอบคุณผู้มีน้ำใจช่วยเหลือ ถึงแม้ว่าจะไม่รู้จักกันมาก่อนก็ตามที

ไม่มีความคิดเห็น: