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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage