qt - Qt Scale 应用程序分辨率
问题描述
我创建了一个保证始终在 4:3 监视器上运行的 Qt 应用程序。我将 320x240 硬编码为分辨率,并将一切设计得看起来很棒。
现在要求发生了变化,应用程序将以 640x480 分辨率(仍为 4:3)运行。
有没有一种简单的方法来扩展整个应用程序,使所有东西的大小都翻倍。特别是我想避免手动更改所有按钮大小、字体、叠加层的绝对定位等。
我找到了很多关于高 DPI 设置的答案,但这与高 DPI 关系不大。
解决方案
您可以使用 aQGraphicsView
并将您的主要小部件嵌入其中。但是您的整个应用程序必须对所有小部件应用相同的因素。
AQGraphicsView
允许您放大。
例如:
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_())
这是最快的进行方式。最好的方法是将整个代码重构为独立于分辨率(例如,通过使用配置类)。
推荐阅读
- python - 我有 django 的问题
- xamarin.forms - (Xamarin.Forms) Shell 不适用于 IOS 中的 TabbedPage
- python - 如何在 TextEdit 中使用文本并对其应用更改?就像我的代码看到它并告诉我我可以在 -btn_func- 函数中做什么?
- javascript - Video-Js 点击事件:如何不触发控制栏按钮
- mysql - 在 MySQL 5.5 中安全地更改列
- javascript - 搜索缩小结果范围
- mysql - 没有公共字段时如何计算不同表中的数字?
- php - Wordpress 回显链接到 .php,找不到页面
- android - 如何通知用户有新数据可用,以便他们需要刷新?
- c# - 我试图从字符串转换为整数。显示输入格式不正确