Unsolved sometimes qt was ended forcefully, weird.
-
@Christian-Ehrlicher
So? :) The central widget is some widget in the full screen app, but there can be all sorts round the edges. So the widget itself won't be the full screen. I'm thinking like the central widget area in aQMainWindow
. I guess you're not? -
@JonB said in sometimes qt was ended forcefully, weird.:
I guess you're not?
I don't see a need for all the calculation at all - using a proper layout will make all those stuff superfluous.
-
@Christian-Ehrlicher said in sometimes qt was ended forcefully, weird.:
I don't see a need for all the calculation at all - using a proper layout will make all those stuff superfluous.
I agree! But it wasn't the question :)
-
@all,
thank you so much for your time. sorry i wasn't clear about my requirement. what i care is the centrawidget size when QMainWindow is in fullscreen.again, i am posting the code with the erros,
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); showFullScreen(); ui->dockWidget->setWidget(ui->tableWidget); ui->line1->hide(); } void MainWindow::resizeEvent(QResizeEvent *event) { QMainWindow::resizeEvent(event); // Your code here. static bool bOnlyOnce = true; if (bOnlyOnce && isVisible()) { bOnlyOnce = false; memory allocation, file reading and data initialization QFileInfo fileInfo(QCoreApplication::applicationFilePath()); if () QMessageBox::information(this, "title", QString("%1").arg(fileInfo.size())); //***sometimes crash here ??? get the size of centralwidget, prepare drawing environment ui->statusbar->addWidget(ui->lable1, 40); //***sometimes it crash here if i comment out QMessageBox line above*** ??? } }
now the QMessageBox line would crash sometimes(qtcreator says the process was ended forcefully), and if i comment out this line, the ui->statusbar line sometimes would report "Trying to construct an instance of an invalid type, type id: 1061" and the process was ended forcefully.
i haven't found any rules about "sometimes", sometimes it will crash several times continuously when i press CTRL+R, but sometimes the program works fine.
And it's working alwasys fine if i press F5 to debug the app.In addition, in the old backup version, it's working always fine. this version just has more functions after the crash point.
-
As @J-Hilk already told you 4 days ago - don't create an eventloop in a resize event!
-
@Christian-Ehrlicher
thanks, i am not 100% sure about that answer, but i will try another solution. now the question is, where do i get the size of centralwidget automatically when QMainWindows is in fullscreen (showFullScreen() in c'tor)? i tried showEvent and C'tor but failed to get the right size. -
@circle
I admit I have not tried it but I would have expected it inshowEvent()
as we discussed earlier. Could you show where you put what code for that? -
I still don't understand the need to know the size of a widget at all - your code you showed us doesn't do anything with it. Use layouts...
-
@JonB
qDebug to print the line and ui->centralwidget->width() -
@Christian-Ehrlicher
well, i am supposed to do some complicated drawings as the background based on the size of centralwidget, there maybe several different solutions and i never use layouts before. those code was migrated from windows. -
@circle said in sometimes qt was ended forcefully, weird.:
qDebug to print the line and ui->centralwidget->width()
Can you show just the few lines of code where you do this? What method it's in and where you do it.
-
@circle said in sometimes qt was ended forcefully, weird.:
i am supposed to do some complicated drawings as the background
You can't draw on a widget outside the paintEvent()...
-
@JonB said in sometimes qt was ended forcefully, weird.:
@circle said in sometimes qt was ended forcefully, weird.:
qDebug to print the line and ui->centralwidget->width()
Can you show just the few lines of code where you do this? What method it's in and where you do it.
void MainWindow::showEvent(QShowEvent * event) { QMainWindow::showEvent(event); qDebug() << "w: " << ui->centralwidget->width() << "h: " << ui->centralwidget->height(); }
-
@Christian-Ehrlicher said in sometimes qt was ended forcefully, weird.:
@circle said in sometimes qt was ended forcefully, weird.:
i am supposed to do some complicated drawings as the background
You can't draw on a widget outside the paintEvent()...
maybe paintEvent() is a better way, but i'm using eventFilter() instead (i am new to qt), more specifically, most of drawings are in the memory, such as qpixmap, qpainterpath, and they are working fine.
-
But not in your example you show above - there you do a lot of stuff which doesn't belong to a resize (or paint)Event. I gave you a lot of examples on how to change it. Giving up.