2013-04-16 4 views
2

У меня есть QWidget с горизонтальным расположением, которое содержит QScrollArea. Когда я добавить виджет в QScrollArea, изменить максимальный размер контейнера QWidget с:QWidget, когда setMaximumSize Кнопка Maximize не работает

this->setMaximumSize(newWidget->maximumWidth(), newWidget->maximumHeight()); 

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

Если установить максимальный размер с более высоким значением, например:

this->setMaximumSize(newWidget->maximumWidth() * 2, newWidget->maximumHeight() * 2); 

Кнопка разворачивания работает хорошо.

Заранее спасибо.

+0

Является ли 'QWidget' верхним уровнем? Можете ли вы изменить размер экрана, чтобы заполнить экран, или он останавливается при максимальном размере? – cmannett85

+0

Да, это верхний уровень. И он останавливается при максимальном размере, но только при использовании мыши. – gutiory

ответ

2

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

Предположительно newWidget->maximumWidth() * 2 работает, потому что этот размер больше вашего рабочего стола.

+0

Да, ты прав. Но ширина рабочего стола 1280, и я хочу, чтобы максимальная ширина для моего окна составляла 889. Итак, если текущий размер моего окна составляет 300, не могу ли я использовать кнопку максимизации для установки ширины до 889? – gutiory

+1

Нет, максимизация окон не «устанавливает его на самый большой размер, который будет отображаться», это состояние рабочего стола, которое вы фактически отключили, остановив окно, которое становится достаточно большим, чтобы состыковать с краями экрана. – cmannett85

+0

Большое спасибо. Еще одна вещь, у вас есть идея решить мою проблему ?. – gutiory