Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Flake от Июнь 18, 2009, 11:20



Название: Вопрос по registerField в QWizard
Отправлено: Flake от Июнь 18, 2009, 11:20
Здравствуйте.

Чтобы получить значение из выпадающего списка на странице нужно его зарегистрировать. Делаю собственно:
Код
C++ (Qt)
registerField("group*", groupsCombo, "currentText", SIGNAL(currentIndexChanged(QString)) );

Потом получаю:
Код
C++ (Qt)
QString a = field("group").toString();

Таким образом имею текст.

А как мне получить itemData? Оно ведь даже не является проперти.


Название: Re: Вопрос по registerField в QWizard
Отправлено: ритт от Июнь 18, 2009, 12:14
даа, засада - к виджету не достучаться :(
пиши саггест троллям...

в качестве обхода данной проблемы можешь унаследоваться от комбобокса и добавить свойство + геттер/сеттер, ооперирующие с itemData


Название: Re: Вопрос по registerField в QWizard
Отправлено: Flake от Июнь 18, 2009, 12:48
Спасибо. Вообще у меня есть способ. Состоит он в следующем.

Делается коннект в классе визарда
Код
C++ (Qt)
connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(pageChanged(int)));

А в pageChanged()
Код
C++ (Qt)
switch(pageId) {...}

А т.к. в визарде есть указатели на страницу, то мы имеем доступ.

А что за геттер/сеттер? Можно подробней?


Название: Re: Вопрос по registerField в QWizard
Отправлено: ритт от Июнь 18, 2009, 14:10
ну как же?
Цитировать
Q_PROPERTY(type name
            READ getFunction // геттер
            [WRITE setFunction] // сеттер
            [RESET resetFunction]
            [DESIGNABLE bool]
            [SCRIPTABLE bool]
            [STORED bool]
            [USER bool]) // из-за ограничений в ветке 4.х USER у наследников игнорится - так что, нам не нужен