Как вы решаете проблемы с разметкой Qt - PullRequest
13 голосов
/ 24 октября 2008

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

Должны быть некоторые инструменты или методы для устранения этой проблемы.

Пожалуйста, поделитесь.

Ответы [ 5 ]

4 голосов
/ 24 октября 2008

Я не знаю каких-либо инструментов для этого, но раньше мне это удавалось, меняя палитру различных элементов в диалоге, а затем просматривая, что занимает больше (или меньше) места, чем я ожидал, и сосредоточить мое расследование на этих элементах.

В более общем смысле убедитесь, что вы установили для диалогового окна не фиксированный размер. Это тоже меня укусило.

3 голосов
/ 18 марта 2011

Вы можете захватить сигнал QApplication :: focusChanged (QWidget *, QWidget *) и изменить фон текущего виджета. Я думаю, что это поможет определить, сколько места каждый виджет занимает.

1 голос
/ 11 декабря 2008

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

Если вы используете QGridLayout, вы можете попробовать сделать вещи span столбцы / строки .

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

1 голос
/ 04 ноября 2008

Похоже, мы могли бы использовать эквивалент режимов Firebug для элементов и CSS-метрик. Самым сложным в таком инструменте было бы эффективно выяснить и сообщить, почему отдельная политика макета использует или не использует заданное значение размера в виджете.

0 голосов
/ 18 марта 2011

Много проб и ошибок. Я обнаружил, что вставка растяжек в стратегические точки часто помогает мне добиться желаемого эффекта. Например, если у меня есть макет QPushButton, минимальный размер которого я хочу, я сделаю что-то вроде следующего:


QHBoxLayout* layout = new QHBoxLayout;
QPushButton* myBtn = new QPushButton("Test");

layout->insertStretch(1);
layout->addWidget(myBtn, 0);
layout->insertStretch(1);

Также не забывайте, что вы можете установить поле содержимого макета с помощью setContentsMargins ().

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

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