QObject::connect: Pas de file d'attente des arguments du type " QVector<int>'
J'ai quelques problèmes avec Qt. J'ai une classe avec un signal qui est des paramètres sont des chaînes de caractères, et d'un slot. Je me connecte le signal de la fente dans le constructeur de la classe. Aussi, je vais créer un thread dans le constructeur de la classe. Le thread lit les données à partir d'un serveur et les mises à jour de l'INTERFACE utilisateur(émet le UpdateMe signal). C'est de cette façon que je peux brancher le signal de la fente:
QObject::connect(this, SIGNAL(UpdateMe(string, string)), this, SLOT(ModifyUI(string, string)));
J'ai un QTreeWidget avec des noms de fichier. Quand je renomme un fichier je en informer le serveur et le serveur notifie à l'autre clients. Lorsque je me connecte à un seul client, il n'y a pas de problème, mais lorsque je me connecte plus d'un client d'un problème: lorsque j'informe le serveur à partir de la deuxième client(quand j'écris dans le support), l'erreur suivante s'affiche:
QObject::connect: Cannot queue arguments of type 'QVector<int>'
J'ai essayé d'enregistrer QVector avec qRegisterMetaType mais j'ai aussi un signal qui est rependu quand je modifie un QTreeWidgetItem(quand je renomme l'élément, par exemple) et j'ai besoin de dissconnect ce signal lorsque je veux changer l'élément de texte. Si je m'inscris QVector je ne peux pas dissconnect ce signal et le signal est rependu.
OriginalL'auteur John Smith | 2013-01-26
Vous devez vous connecter pour publier un commentaire.
Lorsque vous vous inscrivez la QVector, est-ce que votre appel ressembler à ceci?
Une fois que vous faites cet appel, vous devriez être en mesure d'émettre le QVector type de plus de file d'attente de connexions.
L'enregistrement d'un metatype ne devrait pas vous empêcher de déconnexion d'un signal. Il permet simplement de file d'attente de types qui ne sont pas déjà inscrits avec le méta-système.
Et c'est ce que je fais dans la ModifyUI logement: QObject::déconnecter(this->filesTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(OnItemChanged_filesTreeWidget(QTreeWidgetItem*,int))); item->setText(0, QString::fromStdString(newFilename)); QObject:: connect(this->filesTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(OnItemChanged_filesTreeWidget(QTreeWidgetItem*,int)), Qt::QueuedConnection);
- Je m'inscrire QVector<int> comme vous l'avez dit, mais si j'enregistre le dissconect ne fonctionnent pas. Lorsque je passe à un élément du texte le itemChanged signal est rependu et le OnItemChanged_filesTreeWidget slot est appelé.
Je ne pouvais pas répondre à ma question parce que j'ai moins de 10 points de réputation. C'est pourquoi j'ai écrit le code dans les commentaires.
Je vais avoir un moment difficile à la suite de ce qui se passe. Si vous développez votre question avec plus de code, peut-être que je peux aider. Il n'est pas clair du tout ce qui se passe. Vous devriez être en mesure de modifier votre propre question, non?
OriginalL'auteur Jacob Robbins