• 0
Aboorh

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

سؤال

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

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

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

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

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

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

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

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

dialog1::num

و أيضًا

dialog1* d=new dialog1(this);

d->num;

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

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

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

0

شارك هذا الرد


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

6 إجابة على هذا السؤال .

  • 0

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

يمكنك توفير دالة 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();

}

بالتوفيق.

0

شارك هذا الرد


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

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

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

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

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

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

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

0

شارك هذا الرد


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

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

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

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

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

0

شارك هذا الرد


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

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

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

شيء آخر

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
لكن في النافذة الأولى عندما أدخل اليوزر العدد تم تخزينه في متغير من نوع int

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

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

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

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

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

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

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

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

وفقكم الله.

0

شارك هذا الرد


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

في ملف 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();
}

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

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

وفقكم الله.

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

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

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

0

شارك هذا الرد


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

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

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