Уже много чего просмотрел и прочитал.
Возможно ошибку уже просто не вижу.
Задача:
- с главного окна (mainwindow) открываю вторую форму (dialog), на которой размещены радиобаттоны ( 30 штук);
- в dialog.cpp по нажатию кнопки (save) в булевой массив dialog[30] должны передаться значения радиобаттона, который в данный момент isChecked;
-через connect подключаем к кнопке save выполнение слота onbuttonsend, в котором содержится сигнал, передающий булевой массив dialog[];
-в mainwindow.cpp в принимающим слоте значения из массива (который передаем с формы dialog) присваиваются значениям в булевом массиве mW[30] (глобальный, указан в mainWindow.h)
-по кнопке pushButton хочу получить в qDebug значения из массива mW[30]; чтобы проверить какие значения получили из формы dialog
Вопрос:
- когда проверяю что записывается в массив на форме dialog - все отображает правильно( при нажатии на радиобаттон значение меняется на true)
- когда хочу просмотреть что записалось в mW и нажимаю pushputton на главной форме, то выводит, что все значения false. и соответственно нажатых кнопок нет
В чем ошибка? (по идее передать булевой массив ведь можно)
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
bool dialog[30];
signals:
void sendData(bool *dialog);
private slots:
void onbuttonsend();
void on_save_clicked();
void on_close_clicked();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include<QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->save, SIGNAL(clicked()), this, SLOT(onbuttonsend()));
for(int i=0;i<30;i++){
dialog[i]=false;
}
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::onbuttonsend(){
emit sendData(dialog);
}
void Dialog::on_save_clicked()
{
QRadioButton *rb3[30]={ui->radioButton,ui->radioButton_2, ui->radioButton_3, ui->radioButton_4, ui->radioButton_5, ui->radioButton_6,
ui->radioButton_7,ui->radioButton_8, ui->radioButton_9, ui->radioButton_10, ui->radioButton_11,
ui->radioButton_12, ui->radioButton_13,ui->radioButton_14,ui->radioButton_15, ui->radioButton_16,
ui->radioButton_17, ui->radioButton_18,
ui->radioButton_19,ui->radioButton_20,ui->radioButton_21, ui->radioButton_22, ui->radioButton_23,
ui->radioButton_24,ui->radioButton_25, ui->radioButton_26,ui->radioButton_27,ui->radioButton_28,
ui->radioButton_29, ui->radioButton_30};
for(int i=0;i<30;i++){
if(rb3[i]->isChecked()==true) dialog[i]=true;
qDebug()<<"dialog "<<i<<"= "<< dialog[i]<<endl;
}
}
void Dialog::on_close_clicked()
{
for(int i=0;i<30;i++){
dialog[i]=false;
}
close();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<dialog.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void receivedata(bool *e);
private slots:
void on_pushButton_clicked();
void on_action_3_triggered();
private:
Dialog *myform;
Ui::MainWindow *ui;
bool mW[30];
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
#include"dialog.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
myform = new Dialog;
connect(myform, SIGNAL(sendData(bool*)), this, SLOT(receivedata(bool*)));
for(int i = 0; i < 30; i++){
mW[i] = false;
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::receivedata(bool *e){
for(int i = 0; i < 30; i++){
mW[i] = e[i];
}
}
void MainWindow::on_pushButton_clicked()
{
for(int i = 0; i < 30; i++){
qDebug()<<"bool array1 "<<i<<" = "<<mW[i]<<endl;
}
}
void MainWindow::on_action_3_triggered()
{
Dialog window;
window.setModal(true);
window.setWindowFlags(window.windowFlags() & ~Qt::WindowContextHelpButtonHint);
window.exec();
}