Domanda

Ho un QListView da cui posso ottenere un QAbstractItemModel con Lista-> modello ();

Dopo questo, voglio collegare il segnale DataChanged ad un QObject mia abitudine:

 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; 

ecco il mio oggetto personalizzato:

 class CustomObject : public QObject
{
    Q_OBJECT

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

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

private:

}; 

Sto facendo qualcosa di sbagliato? La chiamata QObject restituisce vero, ho un cout nella funzione ONTESTO, ma nulla è mai stampato quando il QListView è cambiato.

È stato utile?

Soluzione

Questo probabilmente significa che il segnale non viene mai emesso. Prova a chiamare

modello-> setData (modello-> index (0, 0), Qt :: EditRole, 3.14);

Se quella non invocare lo slot, quindi l'attuazione di setData() è probabilmente buggy e non emette dataChanged(QModelIndex,QModelIndex), oppure customObject_ da allora è stato cancellato.

Se non è il caso, è necessario darci più informazioni.

Altri suggerimenti

forse c'è e nella funzione ..

ma se fosse il problema, dovrebbe mostrare un errore da parte vostra funzione ...


Probabilmente questo segnale non è emmited. Provare a connettersi con un altro segnale .. è possibile verificare in quel modo ..

Hai provato con

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

? aka assicurarsi che i parametri vengono passati per riferimento. Controllare questo tutorial .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top