【问题标题】:QtMainWindow initialized eventQtMainWindow 初始化事件
【发布时间】:2013-05-21 17:16:28
【问题描述】:

我需要在 QMainWindow 及其所有小部件都初始化和渲染后开始工作。

我怎样才能捕捉到这样的事件?

【问题讨论】:

    标签: c++ qt qmainwindow


    【解决方案1】:

    我看到了两种方法。

    精致:

    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() 运行并发生初始绘制。
    • 使用 showEvent() 代替 paintEvent() 可能更合适
    猜你喜欢
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多