我有一个作业,我不太确定如何处理它,此刻我有2个窗口。 - > MainWindow和PlayerForm。
从菜单中,我调用PlayerFrom并使用此表单创建一个对象播放器。 我的问题是如何将此对象发送回主窗口中的标签?
玩家老虎机:
void MainWindow::on_actionJoueur_triggered()
{
FormulaireJoueur *fj = new FormulaireJoueur;
fj->show();
}
表格OK Slot:
void FormulaireJoueur::on_OkJoueur_clicked()
{
try
{
std::string Nom = (ui->J_Nom->text()).toStdString();
std::string Prenom = (ui->J_Prenom->text()).toStdString();
std::string Telephone = (ui->J_Phone->text()).toStdString();
std::string Position = (ui->J_Pos->text()).toStdString();
QDate Date = ui->J_Date->date();
int jour = Date.day();
int mois = Date.month();
int annee = Date.year();
util::Date DateJoueur(jour,mois,annee);
Joueur NouveauJoueur(Nom,Prenom,DateJoueur,Telephone,Position);
std::string Message = NouveauJoueur.reqPersonneFormate();
}
catch(ContratException e)
{
QMessageBox::information(this,"Erreur","Erreur lors de la création du joueur.");
}
}
FormulaireJoueur.h:
#ifndef FORMULAIREJOUEUR_H
#define FORMULAIREJOUEUR_H
#include <QMainWindow>
namespace Ui {
class FormulaireJoueur;
}
class FormulaireJoueur : public QMainWindow
{
Q_OBJECT
public:
explicit FormulaireJoueur(QWidget *parent = 0);
~FormulaireJoueur();
private slots:
void on_OkJoueur_clicked();
void on_AnnulerJoueur_clicked();
private:
Ui::FormulaireJoueur *ui;
};
#endif // FORMULAIREJOUEUR_H
容器:
Annuaire AnnuairePrincipal("Canadiens");
AnnuairePrincipal.AjouterPersonne(NouveauJoueur);
答案 0 :(得分:0)
编辑:FormulaireJoueur应该从QDialog继承,因为它是一个对话框 再次编辑:closeEvent忘记了
在您的FormulaireJoueur课程中添加Joueur,并为其添加公共getter 我假设您直接使用Joueur类型并且复制构造函数是正确的
Joueur FormulaireJoueur::getJoueur()
{
return this->_joueur;
}
在你的MainWindow.h中添加一个插槽
void FomulaireJoueurFinished(int return)
然后在你的播放器插槽中:
void MainWindow::on_actionJoueur_triggered()
{
FormulaireJoueur *fj = new FormulaireJoueur;
connect(fj, SIGNAL(finished ( int)), this, SLOT(FomulaireJoueurFinished(int return));
fj->show();
}
然后在MainWindow.cpp
void MainWindow::FomulaireJoueurFinished(int return)
{
if (return == QDialog::Accepted)
this->AnnuairePrincipal.AjouterPersonne((static_cast<FormulaireJoueur *>(sender))->getJoueur());
}
您还应该覆盖FormulaireJoueur对话框的closeEvent
void QDialog::closeEvent ( QCloseEvent * e ) [virtual protected]
整合您的验证和生成Joueur