QWizardPages, чтобы сохранить свои собственные минимальные размеры - PullRequest
2 голосов
/ 17 августа 2010

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

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

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

Второй (и, скорее всего, скорее всего, относящийся к первому) Проблема :

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

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

move(50, 50);

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

Спасибо за вашу помощь в продвинутом.

1 Ответ

1 голос
/ 17 августа 2010

Чтобы исправить эту проблему, я создал дочерний класс 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)));
...