Pregunta

Tengo un QListView de la que puedo obtener una QAbstractItemModel con lista-> modelo ();

Después de esto, quiero conectar la señal DataChanged a un QObject encargo mío:

 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; 

aquí está mi objeto personalizado:

 class CustomObject : public QObject
{
    Q_OBJECT

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

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

private:

}; 

¿Estoy haciendo algo mal? La llamada QObject devuelve verdadero, tengo un cout en la función OnText, pero nada se imprime cuando se cambia el QListView.

¿Fue útil?

Solución

Eso probablemente significa que la señal no se emite. Trate de llamar

Modelo-> setData (modelo-> índice (0, 0), Qt :: EditRole, 3,14);

Si que uno no invoca su ranura, entonces la aplicación de setData() es, probablemente, con errores y no emite dataChanged(QModelIndex,QModelIndex), o de lo contrario customObject_ ya ha sido eliminado.

Si no es el caso, es necesario que nos dará más información.

Otros consejos

Tal vez hay y en su función ..

pero si era el problema, debería mostrar un error por su función ...


Probablemente esta señal no se emmited. Intenta conectar con otra señal .. puede probar de esa manera ..

¿Probaste con

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

? también conocido como asegurarse de que los parámetros se pasan por referencia. Compruebe este tutorial .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top