QMainWindow set frameSize - PullRequest
       1

QMainWindow set frameSize

4 голосов
/ 04 февраля 2011

Как установить frameSize для QMainWindow?

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

Я могу найти высоту экрана минус панель задач без проблем с QApplication::desktop()->availableGeometry(). Однако вызов resize в окне с этим значением не работает; насколько я могу судить, resize заставляет интерьер занимать определенное пространство, в отличие от того, как он вписывается в определенное пространство. Документация, кажется, предлагает соответствующее свойство окна frameSize, но не предоставляет прямой способ его установки. Я, вероятно, могу сделать некоторую обратную связь между resize и frameSize, но есть ли более элегантный / идиоматический способ сделать это?

1 Ответ

6 голосов
/ 04 февраля 2011

Это не так сложно. Смотрите здесь для хорошей диаграммы. Вы можете использовать frameGeometry() и geometry(), чтобы получить ширину кадра (горизонтальную и вертикальную), а затем вычесть их из желаемого размера кадра, прежде чем вызывать resize() (или setFixedSize(), если это больше подходит для вас) ,

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

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