Pergunta

Eu tenho um QListView do qual obtenho um QAbstractItemModel com list->model();

Depois disso, quero conectar o sinal dataChanged a um QObject personalizado meu:

 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; 

aqui está meu objeto personalizado:

 class CustomObject : public QObject
{
    Q_OBJECT

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

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

private:

}; 

Estou fazendo algo errado?A chamada QObject retorna verdadeiro, tenho um cout na função onText, mas nada é impresso quando o QListView é alterado.

Foi útil?

Solução

Isso provavelmente significa que o sinal nunca é emitido. Tente ligar

Model-> setData (Model-> Index (0, 0), Qt :: Editrole, 3.14);

Se esse não invocar seu slot, então a implementação de setData() provavelmente é buggy e não emite dataChanged(QModelIndex,QModelIndex), se não customObject_ desde então foi excluído.

Se também não for o caso, você precisa nos fornecer mais informações.

Outras dicas

Talvez exista e em sua função ..

Mas se fosse o problema, deve exibir um erro pela sua função ...


Provavelmente esse sinal não é emmitido. Tente se conectar com outro sinal .. você pode testá -lo assim ..

Você tentou com

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

?ou seja, certifique-se de que os parâmetros sejam passados ​​​​por referência.Verificar este tutorial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top