gpt4 book ai didi

c++ - 在 Qt 桌面应用程序中显示主窗体后执行操作

转载 作者:行者123 更新时间:2023-12-01 14:57:24 31 4
gpt4 key购买 nike

在 Delphi 我经常做一个 OnAfterShow主窗体的事件。标准OnShow()因为表单只有 postmessage()这将导致 OnafterShow要执行的方法。

我这样做是为了有时冗长的数据加载或初始化不会停止主窗体的正常加载和显示。

我想在将在 Linux 或 Windows 桌面计算机上运行的 Qt 应用程序中做类似的事情。

我有哪些方法可以做到这一点?

最佳答案

您可以覆盖 showEvent()窗口并调用您要使用单次计时器调用的函数:

void MyWidget::showEvent(QShowEvent *)
{
QTimer::singleShot(50, this, SLOT(doWork());
}

这样当窗口即将显示时, showEvent被触发, doWork slot 将在显示后的一小段时间内被调用。

您也可以覆盖 eventFilter在您的小部件中并检查 QEvent::Show事件 :
bool MyWidget::eventFilter(QObject * obj, QEvent * event)
{
if(obj == this && event->type() == QEvent::Show)
{
QTimer::singleShot(50, this, SLOT(doWork());
}

return false;
}

使用事件过滤器方法时,您还应该通过以下方式在构造函数中安装事件过滤器:
this->installEventFilter(this);

关于c++ - 在 Qt 桌面应用程序中显示主窗体后执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62624983/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com