Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
601 views
in Technique[技术] by (71.8m points)

text - Relative font sizes in QT or the most portable way to define them

Coming from a Web Development background I am now into QT Applications development.

Working with QFonts I have seen that I have only two options apparently, to define fonts sizes in QT; either by pixel size, or point size.

When making web layouts I am used to define all my fonts in a relative way... using em units which refer to the inherited font size, where 1em equals the font-size of the container element, 0.5em 50% the font-size, 1.5em 50% bigger, and so on.

I am worried about portability and device/OS idenpendence of my applications. Is there any better way to define these fonts or should I instead stick to one of these methods? If possible, can I inherit font-sizes and define sizes in relative units such as ems or percentages?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Depending on how you design your application, I'm afraid that as well as worrying about font size, you will also need to be very careful about platform-specific fonts.

For example, I've just run Qt Designer, inside Qt Creator 2.3.0 (Based on Qt 4.7.4) - so pretty much the latest stable code, and done the following:

  • Created a new Qt Designer form (i.e. a .ui file)
  • Made it an empty Widget
  • Added a QTextEdit (this is called "Text Edit" in Designer's "Input Widgets" section)
  • Double-clicked on the QTextEdit, to open its properties
  • Viewed its Source

This is what I see:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;">
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html>

Note the use of Windows-specific font, and a very hard-coded size, before I've even made any changes to the content: font-family:'MS Shell Dlg 2'; font-size:7.8pt;

I've previously reported this to Qt's user support, and been told (via the status of the bug) that there there are no plans to fix it. (See Edit below, for info on these bugs)

So at work, every release, we have to search through all our .ui files, to make sure that no platform-specific font info has crept in to any .ui file since the previous release.

(A year or two ago, I ran Designer on each of Mac, Windows and Linux, and showed that each version generated its own platform-specific font info like this, and very different default font sizes. Each failed to display correctly on the other two platforms! The Mac text was way too large on the other two, and the other two were way too small on the Mac)

I really like Qt a lot, but I find this lack of platform independence in something so basic as its UI designer rather frustrating.

Edit - bug info from TrollTech, July 2009

I've found the info from when I reported '.ui cross-platform problems - portability of fonts and sizes'. I don't know how these old references numbers, from TrollTech in July 2009, translate to current Qt issue-tracking: I'm hoping someone else might be able to update the links, to current working ones:


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...