Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ QWizard

Автор: kalombo 18.11.2008, 19:37

Хотел найти, как можно отключить кнопку "Next", нашел следующий способ wizard()->button(QWizard::NextButton)->setEnabled(false);
Проблема в том, как сделать, чтобы кнопка была сразу отключена, при появлении страницы QWizardPage, если добавить этот код в конструктор - программа вылетает, если добавить в initializePage - не работает. Использование полей со звездочками (registerField("element*",wig)) тоже не подходит - путаница получается, когда встроенные фукнции отключают кнопку, а когда мои. Как быть?

Ну и еще небольшой вопрос, сразу же сюда, зачем нужна функция setField(QString, QVariant), когда её используют?

Автор: Litkevich Yuriy 18.11.2008, 20:12

Цитата(kalombo @ 18.11.2008, 22:37) *
Проблема в том, как сделать, чтобы кнопка была сразу отключена,
посмотри пример %QTDIR%\examples\dialogs\classwizard

Цитата(kalombo @ 18.11.2008, 22:37) *
зачем нужна функция setField
Цитата
This function can be used to set fields on any page of the wizard.

Автор: kalombo 18.11.2008, 20:43

Цитата(Litkevich Yuriy @ 18.11.2008, 21:12) *
посмотри пример %QTDIR%\examples\dialogs\classwizard


Там это реализовано через registerField("outputDir*") поле со звездочкой, мне это не подходит. Объясняю почему. У меня реализован QGroupBox с тремя QRadioButton, в зависимости от того какой выбрали появляются Edit'ы которые надо заполнить, естественно, какие-то из них не должны быть пустыми или даже все должны быть заполнены. Я решил делать это все вручную, если все Edit'ы удовлетворяют условию, то я отображаю кнопку, иначе - прячу. А вот в самом начале нужно сразу спрятать её, но сделать этого не получается, выше уже написал про мои попытки, ну не через MouseMove её прятать в самом деле же(. Прокатил бы вариант с registerField, если бы была функция unregisterField, но вроде подобной нету.

Цитата
This function can be used to set fields on any page of the wizard.

Я читал, просто не совсем ясно, эта функция нужна для того, чтобы просто изменить значение для которого уже сделали registerField? Или есть другие варианты использования? Я пробовал на первой странице сделать
setField("test","Hello"); // Поле test не было зарегистрировано, а на последующих страницах пробовал это поле прочитать, получал пустую строку.

Автор: breeve 28.2.2010, 11:47

Хотя тема старая напишу тут. Необходимо дизактивировать кнопку Next в определенных случаях. если диалоговое окно хоть раз открылось то кнопка становиться активной. Кто-нибудь может объяснить мне на словах как эти поля работают. Смотрел пример тем не менее, так и непонял где там идет обращение к кнопке.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)