主要应用程序窗口和Qt中的对话交互

时间:2011-08-08 10:56:40

标签: qt user-interface dialog

美好的一天!

出现问题:主窗口(例如MyApp)在后台工作(在所有其他窗口后面或托盘中),无需显示它。经过一段时间后,会出现一些提醒StayOnTop对话框(父亲= 0,不与主窗口绑定),并要求进行一些用户交互。对话框关闭后,我想让一个应用程序窗口用户当前处于活动状态,并且用户继续完成他的工作,而不是切换到MyApp。但是,代替上述行为,主要的MyApp窗口出现,用户强制切换回他的窗口(作业) - 不方便。

关闭对话框后如何防止出现MyApp主窗口?需要安装一些事件过滤器或访问OS API吗? Mac,Windows,Linux中存在问题。

2 个答案:

答案 0 :(得分:0)

也许只是在对话调用后尝试调用hide方法?其他可能性 - 尝试设置: http://doc.qt.io/qt-4.8/qwidget.html#windowFlags-propQt::Popup

答案 1 :(得分:0)

您可以尝试重新实现主窗口showEvent并忽略该事件,以防其他窗口可见。

void main_window::showEvent( QShowEvent* e )
{
    if( /*one or more of its children are visible */ )
    {
        // nothing to do
    }
    else
    {
        QMainWindow::showEvent( e );
    }
}