【发布时间】:2013-05-21 17:16:28
【问题描述】:
我需要在 QMainWindow 及其所有小部件都初始化和渲染后开始工作。
我怎样才能捕捉到这样的事件?
【问题讨论】:
标签: c++ qt qmainwindow
我需要在 QMainWindow 及其所有小部件都初始化和渲染后开始工作。
我怎样才能捕捉到这样的事件?
【问题讨论】:
标签: c++ qt 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 更合适。
【讨论】:
MainWindow 并且不显示它会导致 job() 运行并发生初始绘制。