Консольное приложение Qt «ВНИМАНИЕ: QApplication не был создан в потоке main ()»
Я создаю очень простое консольное приложение C ++ QT из приведенного здесь примера переполнения стека.
Как использовать QFileSystemWatcher для мониторинга папки на предмет изменений
Код точно такой же, как и код в этом приложении, и я разрабатываю с помощью пользовательского интерфейса Qt, Qt Creator с MinGW 32bit. Я выбрал консольное приложение из проектов, которые я мог выбрать, так как мне не нужен графический интерфейс пользователя. Как только приложение завершило загрузку, приложение отображает сообщение об ошибке «ПРЕДУПРЕЖДЕНИЕ: QApplication не был создан в потоке main ()» и ничего не делает.
Я попытался отладить приложение, но не получил никаких точек останова, я не думаю, что отладка работает в редакторе.
Я быстро пошел по другому пути и изменил QApplication на QCoreApplication, когда я разрабатываю консольное приложение, но получаю точно такое же сообщение об ошибке.
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();
}
Мой профессиональный файл выглядит так:
QT += core
QT += widgets
QT -= gui
TARGET = fsw
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
HEADERS += fileSystemReceiver.h
SOURCES += \
main.cpp