Название: wizardPage доступ к кнопкам
Отправлено: sektor от Январь 13, 2016, 16:10
Добрый вечер форумчане. Создал wizardPage на первой странице я выбираю тип оборудования а на следующей странице для каждого оборудования будут свои параметры. Мне нужно, чтобы вторая страница менялась в зависимости от выбранного оборудования. Как можно это сделать с помощью QtDesignera. Это делается с помощью widget контейнера ?
Название: Re: wizardPage
Отправлено: sektor от Январь 15, 2016, 08:55
Сам же отвечу. Это делается с помощью Stacked Widget
Название: Re: wizardPage
Отправлено: sektor от Январь 15, 2016, 19:05
Не буду создавать новую тему, напишу сюда же. Можно ли получить доступ к кнопкам QWizardpage. Мне нужно сделать не активным кнопку Finish. Пробовал bool QWizard::validateCurrentPage() { return false; } кнопка визуально активная но сигнал на нажатие не посылается. Как перевести кнопку в состояние disable()
Название: Re: wizardPage доступ к кнопкам
Отправлено: __Heaven__ от Январь 15, 2016, 23:45
цикличность пишется через И :). А чтобы погасить finish нужно переопределить isComplete.
Название: Re: wizardPage доступ к кнопкам
Отправлено: sektor от Январь 16, 2016, 17:27
Спасибо за "И" не доглядел :)
Название: Re: wizardPage доступ к кнопкам
Отправлено: sektor от Январь 16, 2016, 19:58
Че то не получается. isComplete находиться в QWizardpage а у меня класс от QWizard унаследован. Я начинающий по C++ подскажите как реализовать. #ifndef WIZARDADDSYSYTEM_H #define WIZARDADDSYSYTEM_H
#include <QWizard> #include <QPainter> #include <QImage> #include <QPixmap> #include <QDebug> #include <QModelIndex> #include <QWizardPage>
namespace Ui { class WizardAddSysytem; }
class QWizardPage; class WizardAddSysytem : public QWizard { Q_OBJECT
public: explicit WizardAddSysytem(QWidget *parent = 0); int indexInt; QStringList nameSystem; //---------------контроллер солнечного заряда-----------------------------------// struct type_solar_controller{ QString IP; QString name; int timeReload; int timeSikl; } solar_controller;
//------------------------------------------------------------------------------// ~WizardAddSysytem();
private: QStringList text; QVector <QImage> imege; void setActiv(int); Ui::WizardAddSysytem *ui; QWizardPage* page;
private slots: void selectedItem(QModelIndex); //void selectedItem(QString); void slotUpdateText();
void on_WizardAddSysytem_accepted(); };
#endif // WIZARDADDSYSYTEM_H
#include "wizardaddsysytem.h" #include "ui_wizardaddsysytem.h"
WizardAddSysytem::WizardAddSysytem(QWidget *parent) : QWizard(parent), ui(new Ui::WizardAddSysytem) { ui->setupUi(this); indexInt=0; connect(ui->listWidget, SIGNAL(clicked(QModelIndex)), this, SLOT(selectedItem(QModelIndex))); connect(ui->Ip, SIGNAL(editingFinished()), this, SLOT(slotUpdateText())); page = new QWizardPage(ui->wizardPage2);
//connect(ui->Ip, SIGNAL(textEdited(QString)), this, SLOT()); ui->Ip->setInputMask("000.000.000.000");
QImage img (":/resurse/imeg/newSystem.png");
imege.resize(3); imege[0].load(":/resurse/imeg/MPPT60-3DBG.jpg"); imege[1].load (":/resurse/imeg/ups.jpg"); imege[2].load (":/resurse/imeg/micrl.jpg");
ui->label_2->setPixmap(QPixmap::fromImage(img).scaled(90,50,Qt::KeepAspectRatio)); ui->imeg2->setPixmap(QPixmap::fromImage(img).scaled(90,50,Qt::KeepAspectRatio));
text << "Cолнечный контроллер может регулиров-\n" "ать рабочее напряжение солнечных\n" "панелей и ругулируя ток заряда АКБ";
text << "Источник бесперебойного электропитания\n" "ИБЭП 220/48(60)В-24А предназначен для\n" "преобразования переменного напряжения \n" "~220В в постоянное напряжение 48В/60В";
text << "ЦРРС являются универсальным решением для\n" "организации многопролетных магистраль-\n" "ных радиорелейных линий связи." ; setActiv(0);
}
WizardAddSysytem::~WizardAddSysytem() { delete ui; } //------------------------установка картинки и текста -------------------------------------------// void WizardAddSysytem::setActiv(int indexInt) { if(indexInt>-1){ ui->imeg->setPixmap(QPixmap::fromImage(imege[indexInt]).scaled(160,100,Qt::KeepAspectRatio)); ui->text->setText(text[indexInt]); } }
//-------------------активный элемент---------------------------------------// void WizardAddSysytem::selectedItem(QModelIndex index) { indexInt = index.row()-1; setActiv(indexInt); ui->stackedWidget->setCurrentIndex(indexInt);
}
void WizardAddSysytem::on_WizardAddSysytem_accepted() { solar_controller.IP = ui->Ip->text(); solar_controller.name = ui->listWidget->item(ui->listWidget->currentRow())->text(); //solar_controller.timeReload = ui->timeReload->; }
void WizardAddSysytem::slotUpdateText() { ui->wizardPage2->isComplete() << true; qDebug()<<"ok"; }
Название: Re: wizardPage доступ к кнопкам
Отправлено: sektor от Январь 16, 2016, 20:44
Все получилось спасибо.
Название: Re: wizardPage доступ к кнопкам
Отправлено: sektor от Январь 16, 2016, 22:02
А можно еще так QWizard::button(QWizard::FinishButton)->setEnabled(false);
|