gui not showing, or closing to fast to see
-
my main.cpp code:
#include "CGUI.h" int main(int argc, char **argv) { std::cout << "__name__"; QApplication app (argc, argv); CNC::CGUI myapp; myapp.show(); return app.exec(); }
main code from https://doc.qt.io/qt-5/qtwidgets-richtext-orderform-example.html
int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow window; window.resize(640, 480); window.show(); window.createSample(); return app.exec(); }
they look equivalent.
i am not getting any errors from compiling, and from running. why is window not showing?
answer: code had an error, that crashed program, without giving any error messages, and try/catch does not catch it
-
What kind of class is
CGUI
? -
@Pl45m4 said in gui not showing, or closing to fast to see:
What kind of class is
CGUI
?class CGUI : public QMainWindow
-
What exit code do you get?Set breakpoints and debug to see what happens. Does it crash or exit properly?!
-
@Pl45m4
can not find where this is printed. eclipse, i did. i am a wee bit new to qt creatorstd::cout << "__name__";
QApplication app (argc, argv);
results in
The inferior stopped because it received a signal from the operating system. Signal name : SIGSTOP Signal meaning : Stopped (signal)
-
i dont get it. it is erroring even like this
int main(int argc, char **argv) { std::cout << "__name__"; QApplication app (argc, argv); //CNC::CGUI myapp; //myapp.show(); //return app.exec(); return 1; }
-
@micha_eleric said in gui not showing, or closing to fast to see:
i dont get it. it is erroring even like this
int main(int argc, char **argv) { std::cout << "__name__"; QApplication app (argc, argv); //CNC::CGUI myapp; //myapp.show(); //return app.exec(); return 1; }
this does not crash when run, but crashes with debug
-
@micha_eleric On which OS.
What Qt version?
How did you install Qt?
Post the stack trace after crash. -
@micha_eleric
Hi,
Try to delete all build folders from the explorer resource (release and debug), not clear from Qt Creator, and try this code (obviously, you see nothing because myapp.show is commented, but you can check if removing builder folder fixes the crash).
Only for curiosity. What is CNC? Maybe a namespace. -
@CP71 said in gui not showing, or closing to fast to see:
What is CNC? Maybe a namespace.
Probably...
@micha_eleric
To check, if nothing appears or if it's just gone too fast to recognize, you could reimplement theshowEvent
in yourQMainWindow
subclass and print someqDebug()
from there (If debugging doesn't work for you, in this case) -
@CP71 said in gui not showing, or closing to fast to see:
@micha_eleric
Hi,
Try to delete all build folders from the explorer resource (release and debug), not clear from Qt Creator, and try this code (obviously, you see nothing because myapp.show is commented, but you can check if removing builder folder fixes the crash).
Only for curiosity. What is CNC? Maybe a namespace.obviously, show was not commented out in the first code i posted.
CNC is the namespace. -
@jsulm said in gui not showing, or closing to fast to see:
@micha_eleric On which OS.
What Qt version?
How did you install Qt?
Post the stack trace after crash.Qt Creator 4.11.0
Based on Qt 5.12.8 (GCC 9.3.0, 64 bit)
installed from Discover
no stack trace. if there is, i have not found it. -
@Pl45m4 said in gui not showing, or closing to fast to see:
@CP71 said in gui not showing, or closing to fast to see:
What is CNC? Maybe a namespace.
Probably...
@micha_eleric
To check, if nothing appears or if it's just gone too fast to recognize, you could reimplement theshowEvent
in yourQMainWindow
subclass and print someqDebug()
from there (If debugging doesn't work for you, in this case)void CGUI::showEvent(QShowEvent * /* event */) { qDebug() << "Date:" << QDate::currentDate(); qDebug() << "Types:" << QString("String") << QChar('x') << QRect(0, 10, 50, 40); qDebug() << "Custom coordinate type:"; }
had no output, and std::cout << "name";, not doing anything.
however, i did find the line that was crashing the program. -
@micha_eleric said in gui not showing, or closing to fast to see:
had no output, and std::cout << "name";, not doing anything.
Perhaps
std::flush()
orstd::endl
to flush, else you won't get it if you crash later on?however, i did find the line that was crashing the program.
And what was that then?
-
@JonB said in gui not showing, or closing to fast to see:
@micha_eleric said in gui not showing, or closing to fast to see:
however, i did find the line that was crashing the program.
And what was that then?
//ui->pushButton_22->connect(ui->pushButton_22, SIGNAL(clicked()),this, SLOT(CGUI::Btn_test_clicked()) ); //?? old qt4 ui->pushButton_22->connect(ui->pushButton_22, &QPushButton::clicked, this, &CGUI::Btn_test_clicked); //?? new qt5
CGUI::Btn_test_clicked exist
i tried inclosing in a try catch block, but still crashes -
Remove everything on the left before
connect
-
@Pl45m4 said in gui not showing, or closing to fast to see:
Remove everything on the left before
connect
well, now that i added a few \n at end of some std::cout, that line is not crashing, but something else is. it was running in regular run, with that commented out.
that format was working on other buttons.
why remove "ui->pushButton_22->"? -
ok. this makes no sense
in the constructorInitTestBoard(); std::cout << "constructor InitTestBoard finished \n" << std::flush;
void CGUI::InitTestBoard() { std::cout << "InitTestBoard \n" << std::flush; try { std::cout << "InitTestBoard try begin \n" << std::flush; //?? test arduino board leds //ui->pushButton_22->connect(ui->pushButton_22, SIGNAL(clicked()),this, SLOT(CGUI::Btn_test_clicked()) ); //?? old qt4 ui->pushButton_22->connect(ui->pushButton_22, &QPushButton::clicked, this, &CGUI::Btn_test_clicked); //?? new qt5 std::cout << "InitTestBoard try 2 \n" << std::flush; //?? Test Board/Motor wiring ui->textEdit_34->setFixedSize(30, 30); ui->textEdit_35->setFixedSize(30, 30); ui->textEdit_35->setFixedSize(30, 30); ui->textEdit_36->setFixedSize(30, 30); ui->textEdit_37->setFixedSize(30, 30); ui->textEdit_38->setFixedSize(30, 30); std::cout << "InitTestBoard try 3 \n" << std::flush; ui->textEdit_40->setFixedSize(30, 30); ui->textEdit_41->setFixedSize(30, 30); ui->textEdit_42->setFixedSize(30, 30); ui->textEdit_43->setFixedSize(30, 30); ui->textEdit_44->setFixedSize(30, 30); ui->textEdit_45->setFixedSize(30, 30); std::cout << "InitTestBoard try end \n" << std::flush; } catch(std::exception& e) { std::cout << "InitTestBoard catch begin \n" << std::flush; std::cout << e.what() << std::flush; MessageBoxError("InitTestBoard"); std::cout << e.what()<< std::flush; } }
console output
__name__ InitTestBoard InitTestBoard try begin InitTestBoard try 2 InitTestBoard try 3 Press <RETURN> to close this window...
it is crashing at end of try{}?
crashing in a try{}, but not getting caught?
well, now, if i comment out
ui->textEdit_40->setFixedSize(30, 30); ui->textEdit_41->setFixedSize(30, 30);
it does not crash on start
-
@micha_eleric
You have several things wrong. Whether they cause the crash I don't know, but let's start by sorting them out....Remove your
try ... catch
. Qt does not throw C++ exceptions, and if you have a coding error/"crash" it won't catch it anyway.ui->pushButton_22->connect(ui->pushButton_22, &QPushButton::clicked, this, &CGUI::Btn_test_clicked); //?? new qt5
@Pl45m4 already said this is wrong. You want:
connect(ui->pushButton_22, &QPushButton::clicked, this, &CGUI::Btn_test_clicked); //?? new qt5
Before
ui->textEdit_40->setFixedSize(30, 30); ui->textEdit_41->setFixedSize(30, 30);
let's put in something like:
qDebug() << ui->textEdit_40 << ui->textEdit_41; // if previous line not acceptable to compiler remove it qDebug() << ui->textEdit_40->objectName() << ui->textEdit_41->objectName();
If either of these "crash"/"go wrong", narrow down to
textEdit_40
vstextEdit_41
one at a time. Is it because of just one of them, not the other? Or, does accessing either of them cause the problem?At one point you said a
SIGSTOP
was reported. Now you talk about "crashing", or just exiting. In any case, are you compiling for debug and running inside the debugger? Does the debugger catch anything/stop/report anything when your code goes wrong or exits?