Russian Qt Forum
Ноябрь 23, 2024, 06:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QWizard передать объект  (Прочитано 4027 раз)
0xFF
Гость
« : Февраль 08, 2010, 12:29 »

Доброго времени суток, такой вопрос - есть Wizard примерно такого типа
Код:
class MyWizard : public QWizard
{
...
};

class A: public QWizardPage
{
...
};

class B: public QWizardPage
{
...
private:
    QString text;
};

class C: public QWizardPage
{
...
};
Код:
MyWizard::MyWizard(QWidget *parent)
    : QWizard(parent)
{
    setPage(0, new A);
    setPage(1, new B);
    setPage(2, new C);
    setStartId(0);

    ...
}

В классе B есть переменная QString, мне нужно чтобы она была доступна на следующей странице визарда. Есть варианты как это сделать не делая ее глобальной и не делая наследование между B и С?
Записан
SpiritFire
Гость
« Ответ #1 : Февраль 08, 2010, 12:36 »

А чем не утраивает простейшее решение?

Код:
class B: public QWizardPage
{
public:
    QString text();
    void    setText(const QString& newText);
private:
    QString m_text;
};

Записан
0xFF
Гость
« Ответ #2 : Февраль 08, 2010, 12:57 »

Не понял как мн это поможет. Мне нужно значение QString text в классе С.
Записан
Kolobok
Гость
« Ответ #3 : Февраль 08, 2010, 13:22 »

Класс MyWizard хранит все три объекта A, B и C и соответственно может передавать информацию от одного другому. При наличии функций доступа, как тебе уже сказали.
Записан
SpiritFire
Гость
« Ответ #4 : Февраль 08, 2010, 13:25 »

Не понял как мн это поможет. Мне нужно значение QString text в классе С.
Ну так а что мешает в классе С (или D, или E) сделать так:
Код:
QString blabla = bPage->text(); 
Религия? Улыбающийся
Записан
mixrutka
Гость
« Ответ #5 : Февраль 17, 2010, 23:18 »

У объекта QWizard есть замечательная функция.

Код:
void QWizardPage::registerField ( const QString & name, QWidget * widget, const char * property = 0, const char * changedSignal = 0 )   [protected]
Creates a field called name associated with the given property of the given widget. From then on, that property becomes accessible using field() and setField().

Fields are global to the entire wizard and make it easy for any single page to access information stored by another page, without having to put all the logic in QWizard or having the pages know explicitly about each other.

Затем можно обращаться к любому полю через
QVariant QWizard::field ( const QString & name ) const
или
QVariant QWizardPage::field ( const QString & name ) const
« Последнее редактирование: Февраль 17, 2010, 23:21 от mixrutka » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.138 секунд. Запросов: 20.