3

次の 2 つのファイルがあります mainwindow.cppeditorplain.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). レーベルは に作られたQLabelQDialogです。

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);
}
4

2 に答える 2

3

カスタム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();
}
于 2013-03-10T22:13:21.133 に答える
0

Editorplain問題がなければ、その文字列をコンストラクターに渡すことができます。

于 2013-03-10T20:04:11.963 に答える