Qt将对象从窗体发送到主窗口
Qt sending Object from a form to mainwindow
我有一个任务,我不太确定如何处理它,目前我有2个窗口。->MainWindow和PlayerForm。
从菜单中,我调用PlayerFrom,并使用此表单创建一个对象播放器。我的问题是如何将此对象发送回主窗口中的标签?
玩家插槽:
void MainWindow::on_actionJoueur_triggered()
{
FormulaireJoueur *fj = new FormulaireJoueur;
fj->show();
}
Form 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);
edit:FormulaireJoueur应该从QDialog继承,因为它是一个对话框再次编辑:closeEvent遗忘
在FormulaireJoueur类中添加Joueur,并添加一个公共getter我假设您直接使用Jouer类型,并且复制构造函数是正确的
Joueur FormulaireJoueur::getJoueur()
{
return this->_joueur;
}
在您的主窗口.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 的验证和生成
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 将变量从主窗口传递到另一个qt c++窗体
- 我在哪里编写在退出 C++ 窗口窗体应用程序之前执行的代码部分
- 如何将C++ dll 在 C# 窗口窗体应用程序下的工作线程中运行
- Windows窗体作为非托管应用程序的子窗口
- 具有可视C++的窗口窗体应用程序中的 Sleep()
- 在窗口窗体中嵌入 GLFW 窗口
- 如何将用户输入的数据从数据网格视图获取到窗口窗体图
- C++窗口窗体:如何在文本框中控制用户输入格式
- Windows 窗体 - 具有父级的 ShowDialog - 为什么在主窗口最大化时单击父级不激活对话框
- 在文本编辑器中创建C++窗口窗体
- c++多线程窗口GUI(访问窗体)
- 创建一个向主窗体返回值的模态窗口
- 是否有方法为窗口窗体中的特定按钮挂钩鼠标事件
- Visual Studio在创建.net窗体时指定的窗口类名是什么?
- Qt将对象从窗体发送到主窗口
- 用Windows窗体替换控制台窗口
- 调试断言失败!当我在VC++窗口窗体应用程序中添加opencv标头时