• 0
somethingwrong

التعامل مع setText

سؤال

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

اخواني الأفاضل.

اقع في مشكلة عويصة مع خاصية setText() لأي كائن.

فعندما اقوم باستدعاء هذه الخاصية على سبيل المثال لـكائن QLabel من داخل (سلوت) قمتُ انا بانشاءه وعندما يصل البرنامج إلى سطر الاستدعاء هذا يختفي البرنامج ويُغلق.

على سبيل المثال لو فرضنا doSomething() هو (سلوت) قمتُ انا بانشاءه فإن عملية الربط لهذا السلوت ناجحة ويقوم بانجاز كل ماهو مطلوب منه (ما عدا) setText() لو كان لها استدعاء من داخل هذا السلوت, فانها تعمل على تدمير البرنامج واختفاء النافذة تماما.

مثال



void MyClass::doSomething()
{
//اشياء معينة يقوم بها هذا السلوت.
//...
//المشكلة في السطر التالي يقوم بتدمير برنامجي واغلاقه بطريقه مفاجئة.
label->setText("some text");
{

علما بأن ليبل في المثال هو عضو معرف داخل الكلاس MyClass, تماما كأي برنامج يا اخواننننننننن عذراً.

ويظهر لي الخطا التالي في qt creator :

"The program has unexpectedly finished."

المشكلة عند تطبيقي لدروس الكتاب, اجد ان setText تعمل بشكل صحيح وكما هو متوقع وبنفس الفكرة.

وهناك رسالة خطأ اخرى تظهر دائما سواء كان البرنامج صحيح او خطا

" ** (<unknown>:2333): CRITICAL **: atk_object_set_name: assertion `name != NULL' failed"

يعمل البرنامج او لا يعمل, يظهر هذا الخطا عند عمل run لأي برنامج في qt creator.

معذره على الاطالة كنت سأعرض هذا الموضوع في موضوع للأخت رغدة (آلية سجنال وسلوت) المثبت ولكن ارى انه لا يتعلق بموضوعها بشكل مباشر ولكن ارجو اهتمامها واهتمامكم بالموضوع لأني بدأت اكره مكتبة كيوت.

شكراً على مساعدتكم مقدماً وبارك الله فيكم جميعا

المرسل: ع ط

:lol:

0

شارك هذا الرد


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

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

  • 0

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

طيب ضع البرنامج بالكامل يمكن انك لم تعطي مؤشر صحيح ل label .

0

شارك هذا الرد


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

الاخ الفاضل مصفوفة:

بارك الله فيك على اهتمامك.

تفضل هذا البرنامج كتبته قبل قليل عندما قرأت مشاركتك.

test class.h



#ifndef TESTCLASS_H
#define TESTCLASS_H
#include <QDialog>

class QPushButton;
class QLabel;

class TestClass : public QDialog
{
Q_OBJECT

public:
TestClass(QWidget* parent = 0);

private slots:
void doSomething();

private:
QPushButton* button;
QLabel* label;

};

#endif // TESTCLASS_H

testclass.cpp


#include <QtGui>
#include "testclass.h"


TestClass::TestClass(QWidget *parent)
:QDialog(parent)
{
QVBoxLayout* v_boxlayout = new QVBoxLayout();
QPushButton* button = new QPushButton("do something");
QLabel* label = new QLabel("hallo world");


v_boxlayout->addWidget(button);
v_boxlayout->addWidget(label);

//السطر التالي يشتغل آخر حلاوة
label->setText("my name...");


setWindowTitle("test class");
setLayout(v_boxlayout);


//الربط شغال مية المية
connect(button, SIGNAL(clicked()), this, SLOT(doSomething()));


}

void TestClass::doSomething()
{
//هنا المشكلة

// label->setText("do something");
// اي ست تيكست حتى السطر التالي يظهر خطأ
//button->setText("push button");
// التعامل مع اي خاصية لأي كائن تقريبا

//السطر التالي يعمل بشكل سليم
// هذا يدل على ان عملية الربط سليمه وكل شيء سليم
setWindowTitle("hallo world");

}

لاحظ لاهنت! أن setWindowTitle الموجودة داخل السلوت doSomething تقوم بعملها المناسب عند ضغط الزر button هذا يدل على نجاح وسلامت عملية الربط.

لاحظ ايضا أن أي خاصية او سلوت لاي كائن (تقريباً) في مكتبة كيوت لا يعمل, المشكلة ليست مع ليبل وفقط.

main.cpp



#include <QApplication>
#include "testclass.h"


int main(int argc, char* argv[])
{

QApplication app(argc, argv);
TestClass testclass;

testclass.show();

return app.exec();
}

الف شكر على اهتمامك يا اخ مصفوفة وفي حفظ الكريم.

0

شارك هذا الرد


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

شكرا لك

كما ذكرت لك في الرد الاول لم تعطي مؤشر صحيح ل lable .

شفت هذولي السطرين


QPushButton* button = new QPushButton("do something");
QLabel* label = new QLabel("hallo world");

غيرها الى


button = new QPushButton("do something");
label = new QLabel("hallo world");

0

شارك هذا الرد


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

ونعم باهل الحجاز

لا انكر اني ناشيء في لغة سي++ . تقريبا شهور قليلة.

الأخ الفاضل مصفوفة.

بارك الله فيك وكثر الله من امثالك.

قمت بتعديل المثال كما طلبت مني ونجح والحمدلله.

تقديري الخالص. في حفظ الكريم

0

شارك هذا الرد


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

العفو أخي الكريم

0

شارك هذا الرد


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

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

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