簡體   English   中英

使Qt應用程序使用不同的系統字體大小

[英]Making Qt Application that work with different System Font Sizes

我正在開發一個針對Windows和Mac OS X的Qt應用程序。我的應用程序中有很多帶文本的對話框。 我在Windows上創建了應用程序,在那里我調整了對話框的大小以適應我的所有文本。 當我在Mac OS X上編譯時,我意識到所有文本都不合適。 此外,在Windows控制面板中設置不同的系統字體大小會導致所有對話框大小不正確。

你如何處理Qt中不同的系統字體大小?

你沒有:你讓Qt為你做這份工作。 使用布局來排列小部件; 避免設置固定大小。 最后一點:我建議使用Qt-Designer創建接口。

編輯德米特里:這里是2個ui文件(用pyuic4生成)的Python文件,每個文件有2個QLabel。 1 Qlabel字體很大(72),另一個是默認字體(10)。

  1. 最小和最大尺寸受到限制:如果最大字體大小為10,則正確顯示標簽。

     from PyQt4 import QtCore, QtGui class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(115, 160) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth()) Dialog.setSizePolicy(sizePolicy) Dialog.setMinimumSize(QtCore.QSize(115, 160)) Dialog.setMaximumSize(QtCore.QSize(115, 160)) self.verticalLayout = QtGui.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") self.label = QtGui.QLabel(Dialog) font = QtGui.QFont() font.setFamily("Andale Mono") font.setPointSize(72) self.label.setFont(font) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.label_2 = QtGui.QLabel(Dialog) self.label_2.setObjectName("label_2") self.verticalLayout.addWidget(self.label_2) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Dialog", "UGLY", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Dialog", "Not ugly", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) 
  2. 不再限制大小:可以顯示字體大小為72的標簽。

     from PyQt4 import QtCore, QtGui class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(495, 140) self.verticalLayout = QtGui.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") self.label = QtGui.QLabel(Dialog) font = QtGui.QFont() font.setFamily("Andale Mono") font.setPointSize(72) self.label.setFont(font) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.label_2 = QtGui.QLabel(Dialog) self.label_2.setObjectName("label_2") self.verticalLayout.addWidget(self.label_2) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Dialog", "less UGLY", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Dialog", "Not ugly", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM