8
votes

Comment puis-je hériter de Qwidget et QThread?

J'ai une classe comme celle-ci XXX

Quand je fais ce qui précède, je reçois des erreurs sur les signaux de connexion. L'erreur dit référence à "Connecter" est ambiguë . Y a-t-il un moyen d'hériter des deux?

merci


2 commentaires

S'il vous plaît expliquer pourquoi vous voulez faire cela. Depuis que cela ne peut pas être fait (voir réponses), nous aimerions savoir laquelle des choses qui seront pour vous suggérer. Cela nécessite plus d'informations.


Mon programme reçoit des messages d'un autre ordinateur via Firewire. Les messages reçus sont dirigés vers un fichier d'où la GUI les lit. Je veux gérer les messages Firewire dans un fil, et une interface graphique dans un autre fil.


3 Réponses :


12
votes

vous ne pouvez pas. qwidget et qthread hérit (non-pratiquement) à partir de qObject . Vous n'avez donc pas de dérivation virtuelle, donc deux copies de qObject , qui confond le compilateur. QOBJECT a été spécialement conçu de cette manière. Voir:


0 commentaires

-1
votes

Vous ne pouvez pas hériter de plusieurs qObjects.

Vous pouvez hériter d'un et rendre l'autre une variable d'un membre et travailler à partir de là. P>

class GUI : public QWidget 
{
  QThread myThread;
};


2 commentaires

Seul le thread principal peut fonctionner sur des widgets, donc faire un widget un membre d'un fil semble impair. Qu'est-ce que cela pourrait accomplir?


"Vous devriez être hérité de qmainwindow" est faux, vous ne devez le faire que si vous voulez réellement certaines des fonctionnalités fournies par QmainWindow. Tout Qwidget sans parent est automatiquement une fenêtre.



0
votes

qwidgets et des objets liés à l'interface graphique Con ne pas être dans des threads différents que le fil principal de l'application. Vous ne devriez pas hériter les deux. Vous ne pouvez pas également appeler la fonction movetothread () d'un widget.


0 commentaires