سؤال

لدي qlistView التي حصلت عليها من قبل qabstractitemmodel مع القائمة-> النموذج ()؛

بعد ذلك، أريد توصيل إشارة Datachanged إلى QOOBject مخصص مني:

 if( QObject::connect(model, SIGNAL(dataChanged (const QModelIndex , const QModelIndex ) ),
                        customObject_,SLOT(onText(const QModelIndex , const QModelIndex )) ) )
     cout << "SIGNAL SLOT connection successful" << endl;
 else
     cout << "SIGNAL SLOT connection ERROR" << endl; 

هنا هو كائن مخصص الخاص بي:

 class CustomObject : public QObject
{
    Q_OBJECT

public:
    CustomObject (QObject *parent);
    ~CustomObject ();

public slots:
    void onText(const QModelIndex & topLeft, const QModelIndex & bottomRight );

private:

}; 

أفعل أي شيء خطأ؟ ترجع مكالمة QOBJECT TRUE، لدي كوت في وظيفة OnText، ولكن لا يوجد شيء مطبوع على الإطلاق عند تغيير QlistView.

هل كانت مفيدة؟

المحلول

ربما يعني ذلك أن الإشارة غير مبالية. حاول الاتصال

نموذج-> SetData (نموذج-> فهرس (0، 0)، كيو تي :: Editrole، 3.14)؛

إذا كان هذا الشخص لا يحصل على فتحة، ثم تنفيذ setData() ربما عربات التي تجرها الدواب ولا تنبعث منها dataChanged(QModelIndex,QModelIndex), ، او اخرى customObject_ منذ ذلك الحين تم حذفها.

إذا لم يكن الأمر كذلك، فأنت بحاجة إلى تقديم المزيد من المعلومات.

نصائح أخرى

ربما هناك & في وظيفتك ..

ولكن إذا كانت المشكلة، فينبغي أن تعرض خطأ من قبل وظيفتك ...


ربما هذه الإشارة غير مؤثر. حاول الاتصال بإشارة أخرى .. يمكنك اختبار ذلك مثل ذلك ..

هل حاولت

QObject::connect(model, SIGNAL(dataChanged (const QModelIndex &, const QModelIndex &) ),
                    customObject_,SLOT(onText(const QModelIndex &, const QModelIndex &)) );

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top