QFont字体
1. 獲取字體家族名稱列表:
QFontDatabase fd; QStringList strList = fd.families();2. 獲取默認(rèn)字體類型和設(shè)置字體類型
QFont font; font.setFamily(QStringLiteral("微軟雅黑")); // 穩(wěn)定值:SimSun QString strDefaultFamily = font.defaultFamily(); // 變值:微軟雅黑 QString strFamily = font.family();3. 設(shè)置字符間距:按字符寬度的百分比,設(shè)置字符間的間距
// 按字符寬度的百分比,設(shè)置字符間的間距 font.setLetterSpacing(QFont::PercentageSpacing, 100); painter.setFont(font); painter.drawText(QPoint(200, 200), "Test Widget - 100");font.setLetterSpacing(QFont::PercentageSpacing, 200); painter.setFont(font); painter.drawText(QPoint(200, 250), "Test Widget - 200");?所有字符按固定間距,設(shè)置字符間的間距
// 所有字符按固定寬度設(shè)置間距 font.setLetterSpacing(QFont::AbsoluteSpacing, 10); painter.setFont(font); painter.drawText(QPoint(200, 200), "Test Widget-10");font.setLetterSpacing(QFont::AbsoluteSpacing, 20); painter.setFont(font); painter.drawText(QPoint(200, 250), "Test Widget-20");4. 設(shè)置字符串下劃線和上劃線
QFont font("Microsoft YaHei UI", 15, QFont::Bold, true); font.setUnderline(true); //設(shè)置下劃線 font.setOverline(true); //設(shè)置上劃線font.setLetterSpacing(QFont::AbsoluteSpacing, 10); // 設(shè)置字符間的間距 painter.setFont(font); painter.drawText(QPoint(200, 200), "Test Widget");5.? 設(shè)置字符串的字母大小寫
QFont font("Microsoft YaHei UI", 15, QFont::Bold, true); font.setUnderline(true); //設(shè)置下劃線 font.setOverline(true); //設(shè)置上劃線font.setLetterSpacing(QFont::AbsoluteSpacing, 10); painter.setFont(font); painter.drawText(QPoint(200, 200), "Test Widget");font.setCapitalization(QFont::SmallCaps); // 設(shè)置小寫字母轉(zhuǎn)換為大寫字母 painter.setFont(font); painter.drawText(QPoint(200, 250), "Test Widget");font.setCapitalization(QFont::Capitalize); // 單詞的首字母大寫 painter.setFont(font); painter.drawText(QPoint(200, 300), "test widget");font.setCapitalization(QFont::AllUppercase); // 字符全部轉(zhuǎn)換成大寫 painter.setFont(font); painter.drawText(QPoint(200, 350), "Test widget");font.setCapitalization(QFont::AllLowercase); // 字符全部轉(zhuǎn)換成小寫 painter.setFont(font); painter.drawText(QPoint(200, 400), "Test Widget");6.? 設(shè)置字符串的字母大小寫
setPixelSize:字體高度占用的像素px大小。
setPointSize:字體高度占用的可物理測量的長度磅(point)pt大小,一般用于印刷領(lǐng)域。
QFont中定義的PointSize,比如QFont font("宋體",25,QFont::Bold,true),定義的字體高度為25pt。在實(shí)際應(yīng)用中,為避免字體因設(shè)備不同而產(chǎn)生不同效果,推薦使用point。
pt和px兩者有換算關(guān)系,需要知道屏幕的DPI。通過測試,發(fā)現(xiàn)該DPI為邏輯DPI而不是物理DPI。
dpi = QGuiApplication::screens().at(0)->logicalDotsPerInch();
1pt = DPI * 1 / 72 px
對(duì)于邏輯DPI為120的顯示器而言,1pt = 120 * 1 / 72 = 1.67px;25pt = 42px。
在物理DPI下的轉(zhuǎn)換關(guān)系:尺寸(XLen YLen)和分辨率(XScreen YScreen)
X方向:1pt = 1 / 72 inch = 1 / 72 * 2.54 cm = 1 / 72 * 2.54 / XLen * XScreen px
Y方向:1pt = 1 / 72 inch = 1 / 72 * 2.54 cm = 1 / 72 * 2.54 / YLen * YScreen px
對(duì)于分辨率為1920 * 1080,物理尺寸為344mm * 194mm的顯示器而言
X方向:1pt = 1 / 72 * 2.54 / 34.4 * 1920 px = 1.97 px
Y方向:1pt = 1 / 72 * 2.54 / 19.4 * 1080 px = 1.96 px
總結(jié)
- 上一篇: GPS静态解算心得(一)
- 下一篇: 台达变频器485通讯接线图_台达变频器基