Если я правильно понимаю, вам нужно что-то сделать, как только цикл обработки событий приложения будет готов к обработке событий.
Причина, по которой вы не можете сделать это в конструкторе, потому что цикл событий приложения не готов до некоторого времени после , когда конструктор завершил работу.
Что вы можете сделать, это создать слот в вашем классе MainWindow, содержащий код, который вы хотите запустить, настроить однократный таймер в конструкторе и заставить этот таймер вызывать ваш слот. Например:
mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void doStuff(); // This slot will contain your code
// ...
// ...
// ...
}
mainwindow.cpp
:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer::singleShot(0, this, SLOT(doStuff())); // This will call your slot when the event loop is ready
// ...
// ...
// ...
}
void MainWindow::doStuff()
{
// This code will run as soon as the event loop is ready
}