我创建了一个保证始终在4:3监视器上运行的Qt应用程序。我将320x240硬编码为分辨率,并设计了看起来很棒的所有内容。
现在,要求已更改,该应用将以640x480分辨率(仍为4:3)运行。
是否有一种简单的方法可以扩展整个应用程序,从而使所有内容的大小加倍。特别是,我希望避免手动更改所有按钮的大小,字体,叠加层的绝对位置等。
我发现了很多有关高DPI设置的答案,但这与高DPI无关。
答案 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_())
这是最快的方法。最好的方法是将整个代码重构为与分辨率无关(例如,通过使用配置类)。