qt v4.8.0, compilateur VC2010
J'ai un Cependant, chaque fois que je l'exécute, je reçois les erreurs: p> QMainWindow CODE> classe basée et j'essaie d'envoyer des signaux informatiques impliquant
Quuid code> p>
connect(acnInt, SIGNAL(callback_comp_connected(QUuid)),
this, SLOT(on_comp_connected(QUuid)));
4 Réponses :
Vérifiez si ce Ce que j'essaie de dire est que le fichier MOC que vous avez vérifié peut contenir cette définition de logement, mais le compilateur peut utiliser un autre fichier MOC créé précédemment. P> moc_mainwindow.cpp code> est dans votre page de création code> code>. Ou vous utilisez un autre fichier moc_window.cpp. Parce que pour EX: dans QTCreator, il construit la source à un nouveau répertoire de construction. Et aussi, il utilise de vieux fichiers MOC_CPP si vous essayez d'ouvrir la source dans un emplacement différent. p>
C'était c'était - une manière d'une manière ou d'une autre une moce supplémentaire _ *. Le CPP était arrivé dans le dossier de sortie de la version à la place du dossier MOC, et Netty ne le supprimez pas.
Cette étape propre ne nettoie normalement pas ces fichiers MOC, pour ex: lorsque vous exportez un projet à partir d'un autre système, et exécutez une étape propre dans votre système, comme cela.
Donc, si j'ai un fichier moc_maindwindow.cpp dans mon répertoire de Vuild c'est la cause de cette erreur? Ou si TI n'est pas là? Vous n'êtes pas si clair. J'ai le même problème et j'ai un moc_mainwindow.cpp dans mon dossier de construction. Alors devrais-je le supprimer ou devrais-je être bien comme il est là?
Nettoyez le projet puis la construire. Vérifiez le chemin dans lequel les fichiers MOC sont générés et vérifiez qu'il s'agit de la suppression de l'opération propre. Sinon supprimer tous les fichiers MOC et construire. Si vous ne pouvez toujours pas résoudre celui-ci, copiez le projet (uniquement des fichiers source et non des fichiers binaires) à un chemin différent et essayez de construire la source. Toujours la problématique, examinez la modification que vous avez faite. Vérifiez également si Visual Studio a une autorisation d'écriture sur les annuaires de la corbeille.
Vous avez besoin de
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect( this, SIGNAL(testSendQuuid(QUuid)), this, SLOT(on_comp_connected(QUuid)) ); QUuid x = QUuid::createUuid(); emit testSendQuuid(x); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_comp_connected(const QUuid &qcid) { ui->label->setText(qcid.toString()); }
Hmm, va essayer ça. Semble certainement plausible. Parce que le créateur QT serait incorrectement équitable.
Ce n'est pas ça. Ils "normalisent" la signature de la connexion, tournant les références constantes en valeurs car les deux sont compatibles.
Je suis sûr que vous pouvez les connecter, mais êtes-vous sûr que le MOC les correspondra?
Quel type de correspondance attendez-vous que le MOC fasse? Il ne correspond pas aux signaux des machines à sous. Il construit simplement les informations méta-objet nécessaires pour énumérer des méthodes. Les connexions sont construites au moment de l'exécution et l'OP utilise qObject :: connect code>, qui est robuste par ces différences de signature mineures.
Const T & T sont équivalents en ce qui concerne les signaux et les machines à sous, et il n'est pas nécessaire de taper le const T &, toujours (et il est encore plus lent au temps d'exécution en raison de la normalisation).
Ils semblent certainement équivalents. Je suis intrigué qu'il y a une différence de temps d'exécution, mais je suppose qu'à la fin de l'envoi, il est probablement nécessaire de copier la sémantique, qui élimine l'avantage normal d'une référence étant un pointeur «plus sûr».
J'ai résolu le problème en ajoutant Q_Object Macro dans la classe Mainwindow. P>
Merci, c'était mon problème aussi
Merci! Fonctionne comme un charme!
J'ai résolu le problème comme celui-ci dans le constructeur p>
Avez-vous déjà essayé un
propre code>,
exécutez qmake code>,
Build code> séquence? Parfois, le fichier
greated code> est généré QT est confus.
Oui en effet, la première chose que j'ai essayée! J'ai eu quelques occasions où QMake ou MOC ont été confondus (généralement lors de la promotion d'une classe à un descendant QObject lorsqu'il n'était pas non plus). Dans ce cas, cela n'a fait aucune différence.
Quels sont ces typé privées?