2010-08-16 3 views
2

Я работаю с Qt (версии 4.6 на Windows XP 32-бит и компилируется в Qt Creator 2.0.0) и пытается заставить QWizard работать.QWizardPages, чтобы сохранить свои собственные минимальные размеры

Первая проблема:

У меня есть три QWizardPages в моем QWizard до сих пор. На каждой странице применяется QVBoxLayout в качестве макета. Моя первая страница имеет очень малый контент (всего три строки QLabel), но по какой-то причине между QLabel и панелью «< Назад», «Далее>» и «Отмена» имеется довольно много пробелов. Я хочу, чтобы каждая страница имела минимальное количество пробелов на основе содержимого внутри него. Раньше, когда я клал QVBoxLayout в безпользовательский QWidget (это собственное окно), окно всегда было достаточно маленьким, чтобы исправить QVBoxLayout. Теперь есть дополнительные пробелы. Есть ли какой-то вариант, который я должен отключить или включить, чтобы QWizardPages были как можно меньше?

Второй (и, в основном, вероятно, связано с первым) Проблема:

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

Единственная настройка геометрии я делаю, когда я делаю

move(50, 50); 

в конструкторе QWizard. Без изменений ... ничего явно. Я пытаюсь позволить макетам делать свою магию.

Благодарим за помощь в продвижении.

ответ

1

Чтобы устранить эту проблему, я создал класс дочернего QWizard и создал частный слот так:

void ChildClass::fitContents(int id) 
{ 
    adjustSize(); // this automagically resizes the window to fit the contents 
} 

И сделал бы он назвал каждый раз, когда страница была изменена, например, так:

connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(fitContents(int))); 
Смежные вопросы