gpt4 book ai didi

c++ - 执行QAction后如何设置焦点

转载 作者:行者123 更新时间:2023-11-28 04:15:17 26 4
gpt4 key购买 nike

主小部件在执行 QAction 后窃取焦点。我需要将焦点设置为弹出窗口小部件。

QAction *action = new QAction(tr("show popup"), this);
connect(action, &QAction::triggered, this, &MyWidget::showPopup);
addAction(action);

void MyWidget::showPopup()
{
QMessageBox* popup = new QMessageBox(this);
popup->setModal(true);
popup->show();
popup->setFocus();
}

MyWidget 继承自 QWidget。

最佳答案

因为您刚刚创建了 popup,它还没有出现在 GUI 中。即使 show() 也不会立即显示它。在您离开 MyWidget::showPopup() 的范围后,GUI 事件循环将继续循环并能够处理您的新弹出窗口。因此 setFocus() 调用来得太早了。

但正在提供帮助:

QWidget::setFocus() 是一个插槽,因此您可以调用它。

如果您使用计时器 (QTimer::singleShot(0, popup, SLOT(setFocus())));),它应该可以工作。
也许您需要使用 10 毫秒而不是 0 毫秒。

关于c++ - 执行QAction后如何设置焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56787975/

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