int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
myClass myComPro;
myComPro.startAll();
return a.exec();
after that my servers start but shortly after is destroyed.. why??? I think that my class is not in the event loop?? I wish to be like mainwindow class for the GUI sistem.. how can I do that?? to have a main window where to process everything and that not to be in main.cpp
is that possible in Qt?? - hope it is...
any advice??
Many thanks
Yes it is possible and your code looks correct, at least the part that you have shared.
Some things to remember:
even loop starts in a.exec()
. It is not running yet when you call myComPro.startAll()
if you want to start your code after even loop, use QTimer::singleShot(0, [&myComPro]() {myComPro.startAll()})
app won't quit until you stop the even loop (a.quit()
)
@sierdzio actually how does QCoreApplication behave, on default, when no Widget is opened before the event loop?
I would assume, lastWindowClosed() is emitted. -> closing the application ?
Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct
Q: What's that?
A: It's blue light.
Q: What does it do?
A: It turns blue.
@J.Hilk said in a main window class for console app - non GUI:
I would assume, lastWindowClosed() is emitted. -> closing the application ?
Q Core Application ;-) No such signal there.
Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct
Q: What's that?
A: It's blue light.
Q: What does it do?
A: It turns blue.
@sierdzio said in a main window class for console app - non GUI:
Yes it is possible and your code looks correct, at least the part that you have shared.
Some things to remember:
even loop starts in a.exec()
. It is not running yet when you call myComPro.startAll()
if you want to start your code after even loop, use QTimer::singleShot(0, [&myComPro]() {myComPro.startAll()})
app won't quit until you stop the even loop (a.quit()
)
I've just tried that and is giving me this
QEventLoop: Cannot be used without QApplication
atpTCPRunnable(0x555b6e1ba7c0) started on QThread(0x555b6e1bae40, name = "Thread (pooled)")
QEventLoop: Cannot be used without QApplication
where should I use the Qapplication?? should I do the myComPro en extent of it??
Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct
Q: What's that?
A: It's blue light.
Q: What does it do?
A: It turns blue.
@J.Hilk yes here you have it a working one in the main.cpp
#include <QtCore>
#include <QCoreApplication>
#include <QtDebug>
#include <QFile>
#include <QTextStream>
#include <QtGlobal>
#include <stdio.h>
#include <stdlib.h>
#include <QDebug>
#include <atpcommandsprocessing.h>
int main(int argc, char *argv[]) {
//TODO qInstallMessageHandler have to be enabled at the end
// qInstallMessageHandler(myMessageOutput); // Install the handler
QCoreApplication::setOrganizationName("@atp@");
QCoreApplication::setOrganizationDomain("arsinte.co.uk");
QCoreApplication::setApplicationName("atpServerSmartHomeSystem");
QCoreApplication a(argc, argv);
// atpCommandsProcessing myComPro;
// myComPro.startAll();
atp_Ini atpInf;
QHostAddress adr = QHostAddress::Any;
adr.setAddress(atpInf.get_ServerAddress());
atpTcpServer server;
server.setMode(static_cast<atpTcpServer::ThreadMode>( atpInf.get_ThreadMode()));
server.setMaxConnections(atpInf.get_maxConnections());
server.setConnectionTimeout(atpInf.get_timeOut());
server.listen(adr, atpInf.get_ServerPortNo());
// QTimer::singleShot(0, [&myComPro]() {myComPro.startAll();});
// QObject::connect(&myComPro, &atpCommandsProcessing::quit, &a, &QCoreApplication::quit);
return a.exec();
atpTcpServer server;
and as soon as the function finished even the server was closed... I've moved that declaration to the h file in private declarations and everything is working perfectly....
many Thanks to everyone - especially to @sierdzio
God bless