I've read in other posts some piece of code to transfer data from a QDialog to QMainWindow, but it didn't work
Here is what I've done, and I don't know what's wrong of if maybe I shouldn't use signals/slots to do that...
Any help will be very welcomed
MainWindow.cpp:
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->lineEdit->setAlignment(Qt::AlignRight);
Dialog *dialog = new Dialog(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_Open_clicked()
{
Dialog *dialog = new Dialog;
dialog->setModal(true);
dialog->exec();
}
void MainWindow
::validate(QString data
){ ui->lineEdit->setText(data);
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->lineEdit->setAlignment(Qt::AlignRight);
Dialog *dialog = new Dialog(this);
QObject::connect(dialog, SIGNAL(validate(QString)), this, SLOT(validate(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_Open_clicked()
{
Dialog *dialog = new Dialog;
dialog->setModal(true);
dialog->exec();
}
void MainWindow::validate(QString data){
ui->lineEdit->setText(data);
}
To copy to clipboard, switch view to plain text mode
MainWindow.h:
namespace Ui {
class MainWindow;
}
{
Q_OBJECT
public:
explicit MainWindow
(QWidget *parent
= 0);
~MainWindow();
private slots:
void on_Open_clicked();
private:
Ui::MainWindow *ui;
};
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_Open_clicked();
void validate(QString data);
private:
Ui::MainWindow *ui;
};
To copy to clipboard, switch view to plain text mode
Dialog.cpp:
ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->lineEdit->setAlignment(Qt::AlignRight);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_Ok_clicked(){
emit validate(ui->lineEdit->text());
}
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->lineEdit->setAlignment(Qt::AlignRight);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_Ok_clicked(){
emit validate(ui->lineEdit->text());
}
To copy to clipboard, switch view to plain text mode
Dialog.h:
{
Q_OBJECT
public:
explicit Dialog
(QWidget *parent
= 0);
~Dialog();
private slots:
void on_Ok_clicked();
signals:
private:
Ui::Dialog *ui;
};
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void on_Ok_clicked();
signals:
void validate(QString data);
private:
Ui::Dialog *ui;
};
To copy to clipboard, switch view to plain text mode
It's as if the signal and slot wasn't well coded, because when I debug it, it didn't go to the slot when the signal is emited...
Thanks a lot in advance...
Bookmarks