Разрешение приложения Qt Scale - PullRequest
3 голосов
/ 31 мая 2019

Я создал приложение Qt, которое гарантированно всегда будет работать на мониторе 4: 3.Я жестко закодировал 320x240 в качестве разрешения и спроектировал все так, чтобы он выглядел великолепно.

Теперь требования изменились, и приложение будет работать с разрешением 640x480 (по-прежнему 4: 3).

Существует ли простой способ масштабирования всего приложения, чтобы все удваивалось в размере.В частности, я бы хотел избежать необходимости вручную изменять все размеры кнопок, шрифты, абсолютное позиционирование для наложений и т. Д.

Я нашел много ответов о настройках с высоким разрешением, но это мало связано с высоким разрешением.

1 Ответ

2 голосов
/ 01 июня 2019

Вы можете использовать QGraphicsView и встроить в него свой основной виджет. Но все ваше приложение должно применять один и тот же фактор ко всем виджетам.

A 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_())

Это самый быстрый способ продолжить. Наилучшим способом будет рефакторинг всего вашего кода, чтобы он не зависел от разрешения (например, с помощью класса конфигурации).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...