• 0
_Leader_

[ تمت الإجابة ]سؤال : كيف اقوم بإنشاء نافذة وإغلاق النافذة الرئيسية من خلال النافذة المنشئة

سؤال

السلام عليكم ورحمة الله وبركاتة

 

الحالة :

لدي نافذة رئيسية (MainWIndow) ويوجد بها زر(btn) .. يقوم بإنشاء نافذة آخرى .. ويوجد بالنافذة التي تم إنشائها زر(btn) وضيفة هذا الزر انه يقوم بإغلاق النافذة الرئيسية(MainWindow)

 

ما أريد الوصول إليه هو كيف أقوم بالتعامل مع الـ MainWindow من خلال النافذة المنشئة

 

ملفات المشروع :

1I8VCN.png

 

أكواد المشروع :

widget.h

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <mydialog.h>namespace Ui {class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private slots:    void on_pushButton_clicked();private:    Ui::Widget *ui;    myDialog *ddd;};#endif // WIDGET_H

widget.cpp

#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);}Widget::~Widget(){    delete ui;}void Widget::on_pushButton_clicked(){    ddd = new myDialog(this);    // create new window    ddd->show();}

النافذة التي سيتم إنشائها من خلال الزر الموجود في النافذة الرئيسية

mydialog.h

#ifndef MYDIALOG_H#define MYDIALOG_H#include <QDialog>namespace Ui {class myDialog;}class myDialog : public QDialog{    Q_OBJECTpublic:    explicit myDialog(QWidget *parent = 0);    ~myDialog();private:    Ui::myDialog *ui;};#endif // MYDIALOG_H

mydialog.cpp

#include "mydialog.h"#include "ui_mydialog.h"myDialog::myDialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::myDialog){    ui->setupUi(this);}myDialog::~myDialog(){    delete ui;}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1 إجابات على هذا السؤال .

  • 0

حصلت على الحل

 

من خلال signals & slots في Qt :

 

نظيف هذا الاسطر في mydialog.h

private slots:    void on_pushButton_clicked(); // OnClicksignals:    void closethefirstwindow();

لتصبح كتالي :

#ifndef MYDIALOG_H#define MYDIALOG_H#include <QDialog>namespace Ui {class myDialog;}class myDialog : public QDialog{    Q_OBJECTpublic:    explicit myDialog(QWidget *parent = 0);    ~myDialog();//---- the changes ----private slots:void on_pushButton_clicked(); // OnClick            signals:void closethefirstwindow();//----end----private:    Ui::myDialog *ui;};#endif // MYDIALOG_H

ونظيف هذا السطر في widget.cpp بعد إنشاء النافضة الثانية :

connect(ddd, SIGNAL(closethefirstwindow()), this, SLOT(close()));

وتصبح كتالي :

#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);}Widget::~Widget(){    delete ui;}void Widget::on_pushButton_clicked(){    ddd = new myDialog(this);    // create new window    ddd->show();//---- the changes ----connect(ddd, SIGNAL(closethefirstwindow()), this, SLOT(close()));//----end----}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .