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

متغير معرف في dialog1 أريد استخدامه في dialog2

بدأه Aboorh في 24 مايو 2010 · 6 رد · 951 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي خطأ في تنفيذ مشروعي

لقد عرفت متغير في dialog1

اسمه على سبيل المثال num

يدخل قيمته اليوزر بواسطة lineEdit

ثم أحوله إلى int وأخزنه في المتغير num

وعندما أود أستخدامه في dialog2 تظهر المشاكل

حاولت استدعاءه بطرق مختلفة لكن دون جدوى مثل:

dialog1::num

و أيضًا

dialog1* d=new dialog1(this);

d->num;

لكن دون جدوى ..

من كان لديه فكرة عن ذلك فليخبرني

مع خالص امتناني..

#2

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

يمكنك توفير دالة get/set للمتغير بحيث تقرأ قيمتها بسهولة.

dialog1* d=new dialog1(this);
d->getNum();

int dialog1::getNum()
{
return num;
}

لكن بسبب أن المتغير num يأخذ قيمته من المستخدم فان الكود السابق لن ينفع ، ويجب التأكد من أن يتم تنفيذ d->getNum() بعد أن يدخل المستخدم القيمة المطلوبة في QLineEdit

مثلا يمكن بهذا الشكل:

void dialog2::any_function()
{
       dialog1* d=new dialog1(this);
      if ( dlg->exec() == QDialog::Accepted )
     // do anything with it    d->getNum();

}

بالتوفيق.

#3

الله يكتب لك الأجر يا أخي الكريم

تم حل المشكلة ولله الحمد جزاك الله خير..

هناك سؤال آخر وأعلم أنني أكثرت ..

لكنني مضطرة ..

أنشئت مستطيل في الكيوت عن طريق مكتبة الأوبن جي أل لكنني أريد هذا المستطيل يظهر داخل نافذة وضعت فيها botton

لأنه يظهر مستقلاً

#4

بعد أن أنشئت فئة الرسم ب openGL ، أنشئي فئة أخرى وضعي فيها الزر وكائن من فئة الرسم.

MainWidget::MainWidget(QWidget* parent): 
QWidget(parent) {

	QPushButton* okButton = new QPushButton("Ok",this);
	MyGLWidget* glWidget = new MyGLWidget(this);

	// Set Properties.
	// Some Connection.
	// Use Layout.
}
#5

لكن في النافذة الأولى عندما أدخل اليوزر العدد تم تخزينه في متغير من نوع int

يعني القيمة محفوظة الآن لكن عندما استدعي get في كلاس اخر لأستخدم هذا المتغير لا يمكنني ذلك..!!

شيء آخر

أرسلت مشروعي لصديقتي وأجرت عليه بعض التعديلات وعملت له تشغيل واشتغل

بعدها ارسلت لي البروجكت وشغلته على جهازي واشتغل لكن وبمجرد ان أغير أي شي في البروجكت ولو مسح كومنت حتى تظهر لي أخطاء بالآلاف

هل لديكم فكرة عن ذلك ؟؟؟

#6
اقتباس
لكن في النافذة الأولى عندما أدخل اليوزر العدد تم تخزينه في متغير من نوع int

يعني القيمة محفوظة الآن لكن عندما استدعي get في كلاس اخر لأستخدم هذا المتغير لا يمكنني ذلك..!!

- هل النافذة الأولى تغلق بعدما يدخل المستخدم العدد أم تظل كما هي؟

- هل تأكدت من أن استدعاء الدالة get يتم بعدما يدخل المستخدم العدد في النافذة الاولى ؟

ويفضل أن ترفقي جزءا من الشفرة حتى نرى المشكلة.

اقتباس
أرسلت مشروعي لصديقتي وأجرت عليه بعض التعديلات وعملت له تشغيل واشتغل

بعدها ارسلت لي البروجكت وشغلته على جهازي واشتغل لكن وبمجرد ان أغير أي شي في البروجكت ولو مسح كومنت حتى تظهر لي أخطاء بالآلاف

يظهر أنها قد قامت بتعديل في الشفرة مما سبب تلك الأخطاء.

وغالبا أول خطأ يسبب عددا من الأخطاء. لذلك قومي باصلاح أول خطأ يظهر لك وفي حالة لم تصلح ضعي بضعة منها هنا.

وفقكم الله.

#7

في ملف mainwindowb.h من نوع mainwindow

يوجد

puplic:
 void setNum();
    int getNum()

private:

int num;

في ملف mainwindowb.cpp

void MainWindowb::setNum()
{
     QString temp = m_ui->lineEdit->text();
    num=temp.toInt();
}

int MainWindowb::getNum()
{
    return num;
}

الآن النافذة الأخرى

اسمها drawGraph من نوع Widget

ملف drawGraph.h

يوجد:

private:
  int NumberOfNode;

في ملف drawGraph.cpp

في الكونستركتر قمت باستدعاء الـ get وتخزين قيمتها في المتغير الجديد

مع العلم أن النافذة الأولى تنغلق قبل أن تنفتح التالية

drawGraph::drawGraph(QWidget *parent): QWidget(parent),
m_ui(new Ui::drawGraph)
{

    m_ui->setupUi(this);
    MainWindowb* w;
    NumberOfNode=w->getNum();
}

SudaNix كتب:

- هل النافذة الأولى تغلق بعدما يدخل المستخدم العدد أم تظل كما هي؟

- هل تأكدت من أن استدعاء الدالة get يتم بعدما يدخل المستخدم العدد في النافذة الاولى ؟

وفقكم الله.

متأكدة لأنني وضعت في النافذة التي يدخل بها اليوزر القيمة زر ok بعدها تنغلق وإن لم يدخل شيء ستظهر رسالة خطأ حتى يدخل قيمة

بعدها تنغلق وتنفتح الأخرى

جزاك الله خير أكثرت تساؤلاتي لكن تسليم المشروع في الغد ولدي اختبار أيضًا لذا أنا مضطرة لإزعاجك

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