日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

QFont字体

發(fā)布時(shí)間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QFont字体 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 獲取字體家族名稱(chēng)列表:

QFontDatabase fd; QStringList strList = fd.families();

2. 獲取默認(rèn)字體類(lèi)型和設(shè)置字體類(lèi)型

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è)置字符串的字母大小寫(xiě)

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è)置小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母 painter.setFont(font); painter.drawText(QPoint(200, 250), "Test Widget");font.setCapitalization(QFont::Capitalize); // 單詞的首字母大寫(xiě) painter.setFont(font); painter.drawText(QPoint(200, 300), "test widget");font.setCapitalization(QFont::AllUppercase); // 字符全部轉(zhuǎn)換成大寫(xiě) painter.setFont(font); painter.drawText(QPoint(200, 350), "Test widget");font.setCapitalization(QFont::AllLowercase); // 字符全部轉(zhuǎn)換成小寫(xiě) painter.setFont(font); painter.drawText(QPoint(200, 400), "Test Widget");

6.? 設(shè)置字符串的字母大小寫(xiě)

setPixelSize:字體高度占用的像素px大小。
setPointSize:字體高度占用的可物理測(cè)量的長(zhǎng)度磅(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。通過(guò)測(cè)試,發(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é)

以上是生活随笔為你收集整理的QFont字体的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。