الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه _Leader_ في 19 يوليو 2014 · 1 رد · 1,280 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

الحالة :

لدي نافذة رئيسية (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_OBJECT

public:
    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_OBJECT

public:
    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;
}
#2

حصلت على الحل

 

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

 

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

private slots:
    void on_pushButton_clicked(); // OnClick

signals:
    void closethefirstwindow();

لتصبح كتالي :

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

namespace Ui {
class myDialog;
}

class myDialog : public QDialog
{
    Q_OBJECT

public:
    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----
}

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…