Aplikacja konsoli Qt „OSTRZEŻENIE: Aplikacja QApplication nie została utworzona w wątku main ()”
Tworzę bardzo prostą aplikację konsoli C ++ QT z podanego tutaj przykładu na przepełnienie stosu.
Jak używać QFileSystemWatcher do monitorowania zmian w folderze
Kod jest dokładnie taki sam jak kod w tej aplikacji i rozwijam się z interfejsem użytkownika Qt, Qt Creator z MinGW 32bit. Wybrałem aplikację konsoli z projektów, które mogłem wybrać, ponieważ nie potrzebuję graficznego interfejsu użytkownika. Po zakończeniu ładowania aplikacji aplikacja wyświetla komunikat o błędzie „OSTRZEŻENIE: Aplikacja QApplication nie została utworzona w wątku main ()”, a następnie nic nie robi.
Próbowałem debugować aplikację, ale nie trafiłem w żadne punkty przerwania, nie sądzę, aby debugowanie działało w edytorze.
Szybko się zmieniłam i zmieniłam aplikację QApplication na QCoreApplication widzianą, gdy tworzę aplikację konsoli, ale otrzymuję dokładnie ten sam komunikat o błędzie.
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();
}
Mój plik pro wygląda tak:
QT += core
QT += widgets
QT -= gui
TARGET = fsw
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
HEADERS += fileSystemReceiver.h
SOURCES += \
main.cpp