3 votes

Qt / Envoyer des données de la fenêtre principale vers le dialogue ou récupérer des données de la fenêtre principale ?

Il y a deux fichiers : mainwindow.cpp y editorplain.cpp

editorplain.cpp est un dialogue en tant que widget.

Problème : envoyer des données textuelles à l'étiquette d'une autre boîte de dialogue.

mainwidnow.cpp

L'action déclenchée à partir du menu appelle un nouveau dialogue : er retournera la chaîne de la fenêtre principale.

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

Lors de l'ouverture d'un dialogue, je veux récupérer les données d'une chaîne de caractères. er :

Editorplain::setData(myType myData)
{
    ui->label_2->setText(myData.textForEdit);
}

Expliquons mon problème. Sur mywindow J'ai une chaîne er qui renvoie une chaîne de caractères comme résultat. Ce site er devrait envoyer sur le dialogue editorplain et définir comme étiquette par exemple : ui->label->setText(er) . L'étiquette est QLabel faite sur QDialog .

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 fichier :

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

3voto

Viv Points 15531

Si c'est un QDialog personnalisé, il suffit de créer la fonction setData() public . De cette façon, vous pouvez appeler la fonction à partir de MainWindow en passant votre chaîne avant d'afficher la boîte de dialogue. Vous n'avez donc pas besoin de passer quoi que ce soit dans le constructeur.

Quelque chose comme dans editorplain.h

public:
void setData(const QString &labelText);

y editorplain.cpp

void Editorplain::setData(const QString &labelText) {
  ui->label_2->setText(labelText);
}

Maintenant dans mainwindow.cpp

void MainWindow::on_actionRoot_files_triggered()
{
    QString er = ui->selected_filename->text();

    Editorplain editorplainwidget;
    editorplainwidget.setData(er);
    editorplainwidget.exec();
}

0voto

cubuspl42 Points 1293

Vous pouvez simplement passer cette chaîne à Editorplain si cela ne pose pas de problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X