0

Windows と Mac OS X を対象とする Qt アプリケーションに取り組んでいます。アプリケーションにテキストを含むダイアログがたくさんあります。Windows でアプリケーションを作成し、すべてのテキストがきちんと収まるようにダイアログのサイズを調整しました。Mac OS X でコンパイルするとすぐに、すべてのテキストが適切に収まらないことに気付きました。さらに、Windows コントロール パネルで異なるシステム フォント サイズを設定すると、すべてのダイアログ サイズが正しくなくなります。

Qtでさまざまなシステムフォントサイズをどのように処理することになっていますか?

4

1 に答える 1

2

あなたはしません: あなたは Qt に仕事をさせます。レイアウトを使用してウィジェットを配置します。固定サイズの設定は避けてください。最後のポイント: Qt-Designer を使用してインターフェイスを作成することをお勧めします。

Dmitry の編集: これは、2 つの ui ファイル (pyuic4 で生成) からの Python ファイルで、それぞれに 2 つの QLabel があります。1 つの Qlabel フォントは巨大 (72) で、もう 1 つはデフォルト (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_())
    
于 2013-07-22T08:20:35.707 に答える