Как получить доступ к тексту comboBox из другого QDialog и записать его в lineEdit в этом диалоге - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно получить доступ к тексту комбинированного списка в Mainwindow из диалогового окна.После этого я хочу написать этот текст в LineEdit в диалоге.Как я могу это сделать?

Я пытался справиться с этим с помощью сигнала / слота.Однако я не смог исправить.Я новичок и мне нужна помощь.

projects.h

signals:
    void get_name_pro(const QString &);
    void get_name_soft(const QString &);

private slots:
    void on_comboBox_projects_currentIndexChanged(const QString &arg1);
    void on_pushButton_addChange_clicked();
    void on_comboBox_software_activated(int index);
    void on_comboBox_software_currentIndexChanged(const QString &arg1);
    void popUp_Change_Note();
    void popUp_Report();

projects.cpp

void Projects::on_pushButton_addChange_clicked()
{
    Add_Change addChange;
    addChange.setModal(true);
    addChange.exec();

    QString data_pro = ui->comboBox_projects->currentText();
    QString data_soft = ui->comboBox_software->currentText();
    //QString data_soft = ui->tableView_projectDetails->model()->data(ui->tableView_projectDetails->model()->index(0,0)).toString();

    Add_Change *add_change;
    add_change = new Add_Change(this);
    connect (this, SIGNAL( get_name_pro( const QString & ) ), add_change, SLOT( set_text_pro( const QString & ) ) );
    connect (this, SIGNAL( get_name_soft( const QString & ) ), add_change, SLOT( set_text_soft( const QString & ) ) );
    //connect(this, &Projects::get_name_pro, add_change, &Add_Change::set_text_pro);
    //connect(this, &Projects::get_name_soft, add_change, &Add_Change::set_text_soft);

    emit get_name_pro(data_pro);
    emit get_name_soft(data_soft);
    qDebug() << "Project sent:" << data_pro;
    qDebug() << "Software sent:" << data_soft;
}

add_change.h

public slots:
    void set_text_pro(const QString & text_pro);
    void set_text_soft(const QString & text_soft);

private slots:
    void on_toolButton_uploadReport_clicked();
    void on_pushButton_save_clicked();
    void on_pushButton_clean_clicked();

add_change.cpp

void Add_Change::set_text_pro(const QString & text_pro)
{
    qDebug() << "Project received:" << text_pro;
    ui->lineEdit_proChanged->setText(text_pro);
}
void Add_Change::set_text_soft(const QString & text_soft)
{
    qDebug() << "Software received:" << text_soft;
    ui->lineEdit_softChanged->setText(text_soft);
}

Я вижу это сообщение qDebug после нажатия кнопки addChange pushButton:

Project received: "Monitoring"
Software received: "Broadcast"
Project sent: "Monitoring"
Software sent: "Broadcast"

Однако lineEdit_proChanged и lineEdit_softChanged по-прежнему пусты.

Мне нужна помощь для управления этим.Заранее спасибо.

1 Ответ

0 голосов
/ 12 июня 2019

Это потому, что вы показываете один QDialog (Add_Change addChange;) при подключении сигнала и слотов к другому (Add_Change *add_change;)

...