QObject :: connect problemas con QAbstractItemModel
-
20-09-2019 - |
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.
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 .