Hallo,
vereinfacht, ich möchte in einem neuen Fenster z.B. einen String ändern,
den ich erst im ersten Fenster festgelegt habe.
Der geänderte String wird nicht dargestellt, sondern nur der default Wert.
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "mydialog.h"
#include <QMainWindow>
#include <QString>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{ Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
myDialog * my_Dialog;
QString TEST;
public slots:
void Test (const QString &);
private:
Ui::MainWindow *ui;
private slots:
void on_action1234_triggered();
};
#endif // MAINWINDOW_H
mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
#include <QString>
namespace Ui {
class myDialog;
}
class myDialog : public QDialog
{
Q_OBJECT
public:
explicit myDialog(QWidget *parent = nullptr);
~myDialog();
private slots:
void on_buttonBox_accepted();
void Name_schreiben ();
private:
Ui::myDialog *ui;
QString TEST = "alter Text";
signals:
void retName(const QString &);
};
#endif // MYDIALOG_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mydialog.h"
#include <QString>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{ ui->setupUi(this);
}
MainWindow::~MainWindow()
{ delete ui;
}
void MainWindow::Test(const QString & TEST)
{ ui->label->setText(TEST);
}
void MainWindow::on_action1234_triggered()
{ QString TEST_1 = "neuer Text";
my_Dialog = new myDialog();
connect(my_Dialog, SIGNAL(retName(const QString &)), this, SLOT (Test (const QString &)));
my_Dialog->exec();
}
mydialog.cpp
#include "mydialog.h"
#include "ui_mydialog.h"
#include <QString>
myDialog::myDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::myDialog)
{
ui->setupUi(this);
ui->lineEdit->setText(TEST);
connect(ui->lineEdit, &QLineEdit::editingFinished, this, &myDialog::Name_schreiben);
}
myDialog::~myDialog()
{ delete ui;
}
void myDialog::on_buttonBox_accepted()
{ emit retName(TEST);
close();
}
void myDialog::Name_schreiben()
{ TEST = ui->lineEdit->text();
}