Qt-Konsolenanwendung "WARNUNG: QApplication wurde nicht im main () -Thread erstellt"
Ich erstelle eine sehr einfache C ++ QT-Konsolenanwendung anhand eines Beispiels zum Stapelüberlauf.
Verwendung von QFileSystemWatcher zum Überwachen eines Ordners auf Änderungen
Der Code ist genau wie der Code in dieser Anwendung und ich entwickle mit Qt's UI, Qt Creator mit MinGW 32bit. Ich habe die Konsolenanwendung aus den Projekten ausgewählt, die ich auswählen konnte, da ich keine grafische Benutzeroberfläche benötige. Nachdem die Anwendung vollständig geladen wurde, wird in der Anwendung die Fehlermeldung "WARNUNG: QApplication wurde nicht im main () -Thread erstellt" angezeigt, und es wird nichts unternommen.
Ich habe versucht, die Anwendung zu debuggen, aber es wurden keine Haltepunkte erreicht. Ich glaube nicht, dass das Debuggen im Editor funktioniert.
Ich hatte einen schnellen Versuch und änderte die QApplication in eine QCoreApplication, da ich eine Konsolenanwendung entwickle, aber genau dieselbe Fehlermeldung erhalte.
filesystemreceiver.h
#ifndef FILESYSTEMRECEIVER_H
#define FILESYSTEMRECEIVER_H
#include <iostream>
using namespace std;
#include <QtCore/QApplication>
#include <QtCore/QFileSystemWatcher>
#include <QtCore/QDebug>
#include <QtWidgets/QWidget>
#include <QtWidgets/QMessageBox>
class MyClass : public QWidget
{
Q_OBJECT
public:
MyClass(QWidget* parent=0)
:QWidget(parent){}
~MyClass() {}
public slots:
void showModified(const QString& str)
{
Q_UNUSED(str)
cout << "A message has been received!" << endl;
//QMessageBox::information(this,"Directory Modified", "Your Directory is modified");
}
};
#endif // FILESYSTEMRECEIVER_H
main.cpp
#include <iostream>
using namespace std;
#include <QtCore/QApplication>
#include <QtCore/QFileSystemWatcher>
#include <QtCore/QDebug>
#include <QtWidgets/QWidget>
#include <QtWidgets/QMessageBox>
#include "fileSystemReceiver.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QFileSystemWatcher watcher;
watcher.addPath("C:/QtTest");
QStringList directoryList = watcher.directories();
Q_FOREACH(QString directory, directoryList)
qDebug() << "Directory name" << directory <<"\n";
MyClass* mc = new MyClass;
QObject::connect(&watcher, SIGNAL(directoryChanged(QString)), mc, SLOT(showModified(QString)));
return app.exec();
}
Meine Pro-Datei sieht so aus:
QT += core
QT += widgets
QT -= gui
TARGET = fsw
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
HEADERS += fileSystemReceiver.h
SOURCES += \
main.cpp