Можно ли изменить масштаб графического интерфейса Qt без переписывания кода? - PullRequest
3 голосов
/ 08 февраля 2012

Я отвечаю за большое приложение (100 + KLOC) Qt с десятками окон и сотнями различных типов виджетов в нем.

Сегодня пользователь спросил меня, можно ли как-нибудь подогнать некоторые большие окна приложения к 13-дюймовому дисплею ноутбука.

Конечно, есть способы сделать окна более экономичными, реорганизовать графический интерфейс, чтобы больше отображать / скрывать различные объекты, использовать меньший шрифт и так далее ... но я думаю, что он действительно хочет способ простого равномерного масштабирования всего окна на определенный процент .... эффект, похожий на то, что делает Apple Expose, или на то, что делают некоторые клиенты VNC.

Итак, мой вопрос ... есть ли способ сказать Qt, что нужно уменьшить масштаб всего окна на x%, что не предполагает изменение / редизайн большей части кодовой базы? Я знаю, что в QPainter есть метод setScale (), а QGraphicsView допускает хорошее глобальное масштабирование, но мое приложение имеет разновидность иерархии QWidgets, поэтому мне нужен способ масштабирования всей иерархии, а не только масштабирования внутри конкретного QWidget. холст.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Я не знаю о вашей основной программе и графическом интерфейсе, который вы используете, но при условии, что вы используете графический интерфейс на основе QMainWindow, это будет работать:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Window w;
    w.show();

w.resize(new_width, new_height);

return a.exec();
}

с окном:

namespace Ui {
    class Window;
}

class Window : public QMainWindow
{
    Q_OBJECT

public:
    explicit Window(QWidget *parent = 0);
    ~Window();

private:
    Ui::Window *ui;
};

Предполагается, что вы используете QML, в ответственном классе есть тот же метод, который отображает файл qml.

0 голосов
/ 08 февраля 2012

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

...