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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: wizardPage доступ к кнопкам  (Прочитано 4009 раз)
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« : Январь 13, 2016, 16:10 »

Добрый вечер форумчане. Создал wizardPage на первой странице я выбираю тип оборудования а на следующей странице для каждого оборудования будут свои параметры. Мне нужно, чтобы вторая страница менялась в зависимости от выбранного оборудования. Как можно это сделать с помощью QtDesignera. Это делается с помощью widget контейнера ?
« Последнее редактирование: Январь 15, 2016, 21:35 от gasan_333 » Записан
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« Ответ #1 : Январь 15, 2016, 08:55 »

Сам же отвечу. Это делается с помощью Stacked Widget
Записан
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« Ответ #2 : Январь 15, 2016, 19:05 »

Не буду создавать новую тему, напишу сюда же. Можно ли получить доступ к кнопкам QWizardpage. Мне нужно сделать не активным кнопку Finish. Пробовал
Код:
bool QWizard::validateCurrentPage()
{
    return false;
}
кнопка визуально активная но сигнал на нажатие не посылается. Как перевести кнопку в состояние disable()
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Январь 15, 2016, 23:45 »

цикличность пишется через И Улыбающийся.
А чтобы погасить finish нужно переопределить isComplete.
Записан
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« Ответ #4 : Январь 16, 2016, 17:27 »

Спасибо за "И" не доглядел  Улыбающийся
Записан
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« Ответ #5 : Январь 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";
}


Записан
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« Ответ #6 : Январь 16, 2016, 20:44 »

Все получилось спасибо.
Записан
sektor
Самовар
**
Offline Offline

Сообщений: 100


Просмотр профиля
« Ответ #7 : Январь 16, 2016, 22:02 »

А можно еще так QWizard::button(QWizard::FinishButton)->setEnabled(false);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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