有两个文件:
mainwindow.cpp
和editorplain.cpp
editorplain.cpp
是对话框的小部件。
问题:将文本数据发送到另一个对话框上的标签。
mainwidnow.cpp
从菜单触发的操作调用一个新对话框:
er
将从主窗口返回字符串。
void MainWindow::on_actionRoot_files_triggered()
{
QString er = ui->selected_filename->text();
Editorplain editorplainwidget;
// HERE IS WHAT I WANT SEND A DATA TO ANOTHER DIALOG `editorplain`
editorplainwidget.exec();
}
打开对话框时,我想要从字符串er
中获取数据:
Editorplain::setData(myType myData)
{
ui->label_2->setText(myData.textForEdit);
}
让我们解释一下我的问题。在mywindow
我有一个字符串er
,它返回一些字符串作为结果。此er
应在对话框editorplain
上发送,并设置为标签,例如:ui->label->setText(er)
。标签是QDialog
上的QLabel。
Mainwindow.h
:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionOpen_triggered();
void on_actionExit_triggered();
void on_actionRoot_files_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
editorplain.cpp
档案:
#include "editorplain.h"
#include "ui_editorplain.h"
#include "mainwindow.h"
Editorplain::Editorplain(QWidget *parent) :
QDialog(parent),
ui(new Ui::Editorplain)
{
ui->setupUi(this);
// SHOULD PASS ON THIS CONTRUCTOR?
}
Editorplain::~Editorplain()
{
delete ui;
}
Editorplain::setData(myType myData)
{
ui->label_2->setText(myData.textForEdit);
}
答案 0 :(得分:2)
如果它的自定义QDialog只是使函数setData()
公开。这样你就可以在显示对话框之前从MainWindow调用函数传递你的字符串。然后,您不需要通过构造函数传递任何内容。
editorplain.h
public:
void setData(const QString &labelText);
和editorplain.cpp
void Editorplain::setData(const QString &labelText) {
ui->label_2->setText(labelText);
}
现在在mainwindow.cpp
void MainWindow::on_actionRoot_files_triggered()
{
QString er = ui->selected_filename->text();
Editorplain editorplainwidget;
editorplainwidget.setData(er);
editorplainwidget.exec();
}
答案 1 :(得分:0)
如果这不是问题,您可以将该字符串传递给Editorplain
构造函数。