Изменение размера макета равно MainWindow - PullRequest
0 голосов
/ 28 мая 2018

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

    QWidget widget;
    widget.resize(widget.width(), widget.minimumHeight());
    QRect rec = QApplication::desktop()->screenGeometry();
    int h = rec.height();
    int w = rec.width();
    // Increasing the listwidget size
    ui->listWidget->setFixedHeight(h);
    ui->listWidget->setFixedWidth(w);
   //increasing the button size
    ui->pushButton->setFixedHeight(h0.2);
    ui->pushButton->setFixedWidth(w0.2);

По этой ссылке вы найдете два скриншота, иллюстрирующих мою проблему.

Пожалуйста, решите, чтобы решитьмоя проблема.Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

При определении макета ваших окон и форм в Qt Designer вы должны заранее определить каждый элемент вашей формы, чтобы иметь рабочий макет.

Это решение основано на скриншотах, приведенных в комментариях к вопросу.Выполните следующие действия:

  1. Добавьте пустой виджет в центральную область вашей формы, если там ничего нет.Он будет использоваться в качестве заполнителя для элементов управления, которые вы добавите позже, и, конечно, вы можете заменить его на любой виджет, который вы хотите.Но вам это нужно, чтобы определить правильное расположение.
  2. На панели свойств установите для горизонтального QSizePolicy этого виджета значение MinimumExpanding.
  3. Добавьте горизонтальную прокладку слева от вашего индикатора выполнения.
  4. Определите минимальную / максимальную ширину для белого виджета слева (я думаю, это текстовая область).В качестве примера установите максимальную ширину до 200 пикселей.
  5. Сделайте то же самое для QTabWidget справа.
  6. Задайте минимальную высоту для группового блока сверху.
  7. Затем передайте макет сетки в MainWindow.

Вы должны получить что-то похожее в представлении дизайнера (я использую темную тему, у вас, конечно, будут другие цвета):

Qt Designer screenshot

Если вы выполните все шаги, у вас должно получиться окно с хорошим изменением размера.

На будущее: не забудьте полностью определить макеты,также используя виджеты-заполнители при необходимости, внимательно прочитайте документацию о политиках размера виджетов (их несколько, вам нужно поиграть с ними, чтобы полностью понять каждый из них) и имейте в виду, что Qt использует подход на основе контейнеров, который отличается, какпример из тех, которые используются .Net Framework, который опирается на концепцию якорей.

РЕДАКТИРОВАТЬ: чтобы ответить на вопросы в комментариях

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

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

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

Вы также можете сделать все это программно, проверьте документацию по виджетам Qt для этого,Но для сложных макетов я не пошел бы по этому пути: это много кода ... и вы должны скомпилировать и запустить, чтобы протестировать каждую модификацию.

0 голосов
/ 28 мая 2018

Используя QtCreator, в конструкторе вы можете просто щелкнуть правой кнопкой мыши на родительском виджете и добавить Grid-Layout.Этот изменяет размеры своих детей до его размеров.

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