crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QWizard, динамическое построение списка страниц
FladeX
  опции профиля:
сообщение 10.3.2009, 23:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 20.2.2009
Пользователь №: 564

Спасибо сказали: 0 раз(а)




Репутация:   0  


При помощи QWizard создана программа - набор страниц, связанных "назад"/"далее" кнопками.
Задача - при помощи чекбоксов, выводимых на первой странице, выводить или не выводить последующие страницы. Как это реализовать?

Т.е. на первой странице чекбоксы "страница 2", "страница 3", "страница 4". Если мы отмечаем "страница 2" и "страница 4", то по нажатию "далее" будет показана страница 2, а затем 4, то есть страница 3 будет пропущена.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
FladeX
  опции профиля:
сообщение 19.5.2009, 11:03
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 20.2.2009
Пользователь №: 564

Спасибо сказали: 0 раз(а)




Репутация:   0  


cpp
Func09Page::Func09Page(QWidget *parent)
    : QWizardPage(parent)
{
    setTitle(QObject::trUtf8("Заголовок"));
    setSubTitle(QObject::trUtf8("<br>"));
    setPixmap(QWizard::LogoPixmap, QPixmap(":/images/logo.png"));
    setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/func09.png"));

    check0901 = new QCheckBox(QObject::trUtf8("Текст"));
    label0901 = new QLabel(QObject::trUtf8("Текст"));
    combo0901 = new QComboBox;

    label0902 = new QLabel(QObject::trUtf8("Текст"));
    combo0902 = new QComboBox;

    check0903 = new QCheckBox(QObject::trUtf8("Текст"));
    label0903 = new QLabel(QObject::trUtf8("Текст"));
    combo0903 = new QComboBox;

    check0904 = new QCheckBox(QObject::trUtf8("Текст"));
    label0904 = new QLabel(QObject::trUtf8("Текст"));
    combo0904 = new QComboBox;

    summa09 = new QLineEdit;
    registerField("summafunc09", summa09);

    combo0901->setMaximumWidth(250);
    combo0902->setMaximumWidth(250);
    combo0903->setMaximumWidth(250);
    combo0904->setMaximumWidth(250);

    combo0901->insertItem(1, "10");
    //...
    combo0901->insertItem(50, "500");

    combo0902->insertItem(1, "1.5");
    //...
    combo0902->insertItem(14, "8.0");

    combo0903->insertItem(1, "10");
    //...
    combo0903->insertItem(50, "500");

    combo0904->insertItem(1, "10");
    //....
    combo0904->insertItem(50, "500");

    double h, s1, s2, s3, summa;
    QString hstring, s1string, s2string, s3string;
    hstring = combo0902->currentText();
    s1string = combo0901->currentText();
    s2string = combo0903->currentText();
    s3string = combo0904->currentText();
    h = hstring.toDouble();
    s1 = s1string.toDouble();
    s2 = s2string.toDouble();
    s3 = s3string.toDouble();
    summa = 0;
    if (check0901->isChecked())
    {
        if ((h>=1.5) && (h<2.0))
        {
            // сверхтонкая стяжка
            summa += 1578.1 * s1;
        }
        else if ((h>=2.0) && (h<3.5))
        {
            // тонкая стяжка
            summa += 1623.9 * s1;
        }
        else if ((h>=3.5) && (h<=8.0))
        {
            // нормальная стяжка
            summa += 2040.5 * s1;
        }
    }
    if (check0903->isChecked())
    {
        summa += 4 * sqrt(s2) * 273.0;
    }
    if (check0904->isChecked())
    {
        summa += 2040.5 * s3;
    }

    QString value = QString::number(summa);
    summa09->setText(value);

    QGridLayout *layout = new QGridLayout;
    layout->addWidget(check0901, 0, 0);
    layout->addWidget(label0901, 1, 0);
    layout->addWidget(combo0901, 2, 0);
    layout->addWidget(label0902, 3, 0);
    layout->addWidget(combo0902, 4, 0);
    layout->addWidget(check0903, 5, 0);
    layout->addWidget(label0903, 6, 0);
    layout->addWidget(combo0903, 7, 0);
    layout->addWidget(check0904, 0, 1);
    layout->addWidget(label0904, 1, 1);
    layout->addWidget(combo0904, 2, 1);
    layout->addWidget(summa09, 3, 1);
    setLayout(layout);
}

h
class Func09Page : public QWizardPage
{
    Q_OBJECT
public:
    Func09Page(QWidget *parent = 0);

private:
    QLabel *label0901;
    QLabel *label0902;
    QLabel *label0903;
    QLabel *label0904;
    QCheckBox *check0901;
    QCheckBox *check0903;
    QCheckBox *check0904;
    QComboBox *combo0901;
    QComboBox *combo0902;
    QComboBox *combo0903;
    QComboBox *combo0904;
    QLineEdit *summa09;
};

А использовать пытаюсь здесь:
cpp
OutroPage::OutroPage(QWidget *parent)
    : QWizardPage(parent)
{
    setTitle(QObject::trUtf8("Заголовок"));
    setSubTitle(QObject::trUtf8("Подзаголовок"));
    setPixmap(QWizard::LogoPixmap, QPixmap(":/images/logo.png"));
    setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/outro.png"));

    label9901 = new QLabel(QObject::trUtf8("Текст:"));
    line9901 = new QLineEdit;

    QString summa09 = field("summafunc09").toString();
    line9901->setText(summa09);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label9901);
    layout->addWidget(line9901);
    setLayout(layout);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- FladeX   QWizard   10.3.2009, 23:49
- - FladeX   Какие-нибудь идеи есть?   13.3.2009, 15:37
- - SABROG   Такая есть идея http://doc.trolltech.com/4.5/qwiza...   13.3.2009, 16:23
- - FladeX   Теперь такой вопрос - как из первого листа назначи...   17.3.2009, 17:25
- - FladeX   class ExpertSystem : public QWizard { Q_OBJEC...   19.3.2009, 15:24
|- - AD   ExpertsSystem:: Page_Intro В данном случа...   19.3.2009, 15:40
- - kwisp   Цитата(FladeX @ 19.3.2009, 15:24) Так и н...   19.3.2009, 15:42
- - FladeX   На основе этого примера сделал визард. Но отличие ...   19.3.2009, 15:55
- - FladeX   Ну подскажите же эту строчку)   20.3.2009, 20:47
- - kwisp   FladeX, по аналогии действуй Раскрывающийся текст...   21.3.2009, 10:04
- - FladeX   Уже что-то, спасибо! Допустим есть конструкция...   21.3.2009, 14:22
- - Litkevich Yuriy   Цитата(FladeX @ 21.3.2009, 17:22) узнать ...   21.3.2009, 19:13
- - FladeX   Спасибо, вроде именно то что надо. Только вот не к...   21.3.2009, 21:57
- - Litkevich Yuriy   Цитата(FladeX @ 22.3.2009, 0:57) Это что ...   21.3.2009, 22:16
- - kalombo   Вклинюсь сюда тоже со своим вопросом, надеюсь нико...   22.3.2009, 10:13
- - SABROG   Полагаю, что одним из этих методов: QTableWidget ...   22.3.2009, 11:32
- - FladeX   То есть для чекбоксов получается так: setDefaultP...   25.3.2009, 13:07
- - SABROG   Цитата(FladeX @ 25.3.2009, 13:07) field(i...   25.3.2009, 15:00
- - FladeX   То есть получается что для чекбоксов registerField...   3.4.2009, 16:05
- - FladeX   Подскажите что можно сделать с чекбоксами На перв...   14.5.2009, 11:07
|- - SABROG   Цитата(FladeX @ 14.5.2009, 12:07) Подскаж...   14.5.2009, 12:13
- - Kagami   Что-то все коллективно тупят ЦитатаThe QCheckBox ...   14.5.2009, 11:57
- - FladeX   Kagami, и тем не менее, через registerFields у мен...   14.5.2009, 13:27
- - Kagami   В конструкторе страницы делаем: registerField...   14.5.2009, 14:06
- - FladeX   Да, теперь все работает. Благодарю! Еще хочу ...   18.5.2009, 14:30
- - Kagami   Немного подробностей реализации бы не помешало   18.5.2009, 20:05
- - FladeX   cppFunc09Page::Func09Page(QWidget *par...   19.5.2009, 11:03
- - Kagami   Ну.. все очень просто. В данном случае надо подклю...   19.5.2009, 11:37
- - Гость   посмотрите пожалуйста мою тему, аналогичная ситуац...   24.11.2012, 17:12


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


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.1.2025, 18:37