如何从另一个 QDialog 访问组合框的文本并将其写入该对话框中的 lineEdit
How to access text of comboBox from another QDialog and write it to lineEdit in that Dialog
我需要从对话框访问主窗口中组合框的文本。之后,我想将该文本写入 Dialog 中的 lineEdit。我该怎么做?
我试图用 signal/slot 来处理这个问题。但是,我无法修复。我是新手,需要帮助。
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 消息:
Project received: "Monitoring"
Software received: "Broadcast"
Project sent: "Monitoring"
Software sent: "Broadcast"
然而,lineEdit_proChanged和lineEdit_softChanged仍然是空的。
我需要帮助来管理这个。提前谢谢你。
那是因为您显示了一个 QDialog
(Add_Change addChange;
),同时将信号和插槽连接到另一个 (Add_Change *add_change;
)
我需要从对话框访问主窗口中组合框的文本。之后,我想将该文本写入 Dialog 中的 lineEdit。我该怎么做?
我试图用 signal/slot 来处理这个问题。但是,我无法修复。我是新手,需要帮助。
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 消息:
Project received: "Monitoring"
Software received: "Broadcast"
Project sent: "Monitoring"
Software sent: "Broadcast"
然而,lineEdit_proChanged和lineEdit_softChanged仍然是空的。
我需要帮助来管理这个。提前谢谢你。
那是因为您显示了一个 QDialog
(Add_Change addChange;
),同时将信号和插槽连接到另一个 (Add_Change *add_change;
)