Qt量表应用解析

时间:2019-05-31 20:11:23

标签: qt pyqt

我创建了一个保证始终在4:3监视器上运行的Qt应用程序。我将320x240硬编码为分辨率,并设计了看起来很棒的所有内容。

现在,要求已更改,该应用将以640x480分辨率(仍为4:3)运行。

是否有一种简单的方法可以扩展整个应用程序,从而使所有内容的大小加倍。特别是,我希望避免手动更改所有按钮的大小,字体,叠加层的绝对位置等。

我发现了很多有关高DPI设置的答案,但这与高DPI无关。

1 个答案:

答案 0 :(得分:0)

您可以使用QGraphicsView并将主窗口小部件嵌入其中。但是您的整个应用程序必须对所有小部件应用相同的因子。

使用QGraphicsView可以放大。

例如:

class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setFixedSize(320, 420)

        layout = QFormLayout(self)
        btn = QPushButton("Button")
        btn.setFixedSize(100, 40)
        lineEdit = QLineEdit("Button")
        btn.setFixedSize(150, 20)
        layout.addRow("A button", btn)
        layout.addRow("A Line Edit", lineEdit)



if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)

    w = Widget()
    view = QGraphicsView()
    scene = QGraphicsScene(0, 0, 1000, 1000)
    view.setFixedSize(320 * 2, 420 * 2)
    view.setScene(scene)
    view.scale(2, 2)
    proxy = scene.addWidget(w)
    view.centerOn(proxy)
    #w = Widget()
    #w.show()
    view.show()
    sys.exit(app.exec_())

这是最快的方法。最好的方法是将整个代码重构为与分辨率无关(例如,通过使用配置类)。

相关问题