Мне нужно начать работу, когда QMainWindow
и все его виджеты инициализируются и отображаются.
Как я могу поймать такое событие?
Я вижу два способа сделать это.
Сложное:
void MainWindow::showEvent(QShowEvent *e)
{
QMainWindow::showEvent(e);
static bool firstStart = true;
if (firstStart)
{
emit startJob();
firstStart = false;
}
}
И простой (подходит только, если вы показываете главное окно сразу после создания):
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
...
QTimer::singleShot(500, this, SLOT(job()));
}
Обновить:
подобно Chris
сказал, showEvent
гораздо более уместно здесь, чем paintEvent
,
Других решений пока нет …