
IntruderApril 20, 2020, 1:36 a.m.
Не могу разобраться с QWizard и QWizardPage
Всем доброго времени суток!
Помогите разобраться с этим двумя классами. Вроде делаю все по примеру из Help, но ничего не получается, а именно кнопка перехода далее не становится активной, хотя страницы добавляются.
Выкладываю текст своего Wizard (его первый вариант):
Текст заголовочного файла индексов страниц wizard
#ifndef SHARED_DEFS_H #define SHARED_DEFS_H enum { INTRO_PAGE, PARTNUMBER_PAGE, ALTIDENT_PAGE, CONNECTOR_PAGE_1, CONNECTOR_PAGE_2, REFERNCES_PAGE, FINAL_PAGE }; #endif // SHARED_DEFS_H
- Создаю два страницы QWizardPage
#ifndef INTROPAGE_H #define INTROPAGE_H #include <QWizardPage> enum standardPart { CONNECTOR, DISTRIBUTION_PART, ACCESSORY, SOLDER_SLEEVE, SHRINK_SLEEVE, IDENTIFICATION_SLEEVE, CONDUIT, WIRE_MATERIAL }; class QRadioButton; class QLabel; class IntroPage: public QWizardPage { Q_OBJECT public: IntroPage( QWidget* parent = nullptr ); // ~IntroPage(){} int nextId() const override; void initializePage() override; private: QLabel* m_standardpart; QLabel* m_select_lbl; QRadioButton* m_connector_rbtn; QRadioButton* m_distriburionpart_rbtn; QRadioButton* m_accessoty_rbtn; QRadioButton* m_soldersleeve_rbtn; QRadioButton* m_shrinksleeve_rbtn; QRadioButton* m_identificationsleeve_rbtn; QRadioButton* m_conduit_rbtn; QRadioButton* m_wirematerial_rbtn; }; #endif // INTROPAGE_H
#include "intropage.h" #include <QRadioButton> #include <QLabel> #include <QBoxLayout> #include "shared_defs.h" IntroPage::IntroPage( QWidget* parent ) : QWizardPage( parent ) { setObjectName("introPage"); setTitle(tr("Main page")); setSubTitle(tr("Electrical standard part with the subordinated item.")); QBoxLayout* mainLayout = new QVBoxLayout; mainLayout->addWidget(m_standardpart = new QLabel); mainLayout->addWidget(m_select_lbl = new QLabel); mainLayout->addWidget(m_connector_rbtn = new QRadioButton(tr("Connector"))); mainLayout->addWidget(m_distriburionpart_rbtn = new QRadioButton(tr("Distribution part"))); mainLayout->addWidget(m_accessoty_rbtn = new QRadioButton(tr("Accessory"))); mainLayout->addWidget(m_soldersleeve_rbtn = new QRadioButton(tr("Solder sleeve"))); mainLayout->addWidget(m_shrinksleeve_rbtn = new QRadioButton(tr("Shrink sleeve"))); mainLayout->addWidget(m_identificationsleeve_rbtn = new QRadioButton(tr("Identification sleeve"))); mainLayout->addWidget(m_conduit_rbtn = new QRadioButton(tr("Conduit"))); mainLayout->addWidget(m_wirematerial_rbtn = new QRadioButton(tr("Wire material"))); mainLayout->addStretch(1); m_standardpart->setVisible(false); registerField( "typeStandardpart*", m_standardpart); m_connector_rbtn->setChecked( true ); setLayout( mainLayout ); } int IntroPage::nextId() const { return PARTNUMBER_PAGE; } void IntroPage::initializePage() { if(m_connector_rbtn->isChecked()){ m_standardpart->setNum(standardPart::CONNECTOR); }else if(m_distriburionpart_rbtn->isChecked()){ m_standardpart->setNum(standardPart::DISTRIBUTION_PART); }else if(m_accessoty_rbtn->isChecked()){ m_standardpart->setNum(standardPart::ACCESSORY); }else if(m_soldersleeve_rbtn->isChecked()){ m_standardpart->setNum(standardPart::SOLDER_SLEEVE); }else if(m_shrinksleeve_rbtn->isChecked()){ m_standardpart->setNum(standardPart::SHRINK_SLEEVE); }else if(m_identificationsleeve_rbtn->isChecked()){ m_standardpart->setNum(standardPart::IDENTIFICATION_SLEEVE); }else if(m_conduit_rbtn->isChecked()){ m_standardpart->setNum(standardPart::CONDUIT); }else if(m_wirematerial_rbtn->isChecked()){ m_standardpart->setNum(standardPart::WIRE_MATERIAL); } }
#ifndef PARTNUMBERPAGE_H #define PARTNUMBERPAGE_H #include <QWizardPage> class QLabel; class PartNumberPage : public QWizardPage { Q_OBJECT public: PartNumberPage(QWidget* parent = nullptr); // ~PartNumberPage(){} private: QLabel* m_test; // QWizardPage interface public: int nextId() const override; }; #endif // PARTNUMBERPAGE_H
#include "partnumberpage.h" #include <QLabel> #include <QBoxLayout> #include "shared_defs.h" PartNumberPage::PartNumberPage(QWidget* parent) : QWizardPage( parent ) { setObjectName("partNumberPage"); setTitle(tr("Part number")); setSubTitle(tr("Electrical standard part with the subordinated item.")); QBoxLayout* mainLayout = new QVBoxLayout; mainLayout->addWidget(m_test = new QLabel); } int PartNumberPage::nextId() const { return ALTIDENT_PAGE; }
- Код самого Wizard
#ifndef WIZARDSTANDARDPART_H #define WIZARDSTANDARDPART_H #include <QWizard> #include "intropage.h" #include "partnumberpage.h" #include "shared_defs.h" namespace Ui { class WizardStandardPart; } class WizardStandardPart : public QWizard { Q_OBJECT public: explicit WizardStandardPart(QWidget *parent = nullptr); ~WizardStandardPart(); private: Ui::WizardStandardPart *ui; }; #endif // WIZARDSTANDARDPART_H
#include "wizardstandardpart.h" #include "ui_wizardstandardpart.h" #include "shared_defs.h" WizardStandardPart::WizardStandardPart(QWidget *parent) : QWizard(parent), ui(new Ui::WizardStandardPart) { setWindowTitle(tr("License Wizard")); ui->setupUi(this); setPage(INTRO_PAGE, new IntroPage(this)); setPage(PARTNUMBER_PAGE, new PartNumberPage(this)); setStartId(INTRO_PAGE); } WizardStandardPart::~WizardStandardPart() { delete ui; }
- Как вызываю Wizard (mainwindow.cpp):
... void MainWindow::actionCreateStandardPartObject() { WizardStandardPart *wizardStandardPart = new WizardStandardPart(); qDebug() << wizardStandardPart->page(INTRO_PAGE)->title(); qDebug() << wizardStandardPart->page(PARTNUMBER_PAGE)->title(); wizardStandardPart->exec(); } ...
Вот что выводится при запуске wizard:
Но количество страниц в Wizard точно две, потому что я могу получить их свойсва title.
Всем спасибо за помощь заранее.
Делаю так первый раз, может быть что-то упускаю.

We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
Ua
- Unknown akadamn
- Jan. 24, 2025, 5:14 p.m.
Qt - Test 001. Signals and slots
- Result:84points,
- Rating points4
Ua
- Unknown akadamn
- Jan. 24, 2025, 4:22 p.m.
Qt - Test 001. Signals and slots
- Result:42points,
- Rating points-8
Last comments
ИМ
Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовNov. 22, 2024, 9:51 p.m.

Evgenii LegotckoiOct. 31, 2024, 11:37 p.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовOct. 5, 2024, 4:51 p.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
f
Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
firstlunoxodFeb. 15, 2025, 1:46 p.m.

ДмитрийFeb. 3, 2025, 4:24 p.m.
не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Добрый день
А там нет ещё какого-нибудь кода с кнопками. Мне кажется, что там что-то должно быть, чтобы делать кнопку активной.
Но я в упор не вижу у вас подобного кода.
Евгений, добрый день.
Я просмотрел кучу примеров и ничего подобного не нашел.
Кнопки нигде не описываются. Для меня это тоже показалось странным. Я подумал, что это отдается на откуп самому wizard.
Ну вообще у меня есть ещё такая мысль, что необходимо вызывать соответсвующие методы родительского класса страницы