如何将SubWindow添加到QMdiArea(设置为TAB模式)而不从当前活动的Tab中获取焦点?

时间:2013-01-28 15:05:11

标签: qt qt4 qmdiarea

我有一个在后台运行的功能,并在QMdiArea中添加了标签。但是,当添加新选项卡时,它会从当前活动选项卡中窃取焦点。有没有办法可以添加一个新的非活动选项卡(子窗口),所以我将焦点保持在当前使用的选项卡上?

我在网上搜索过但无法找到与此问题相关的任何内容。

我尝试了以下内容:

MyWidget *widget=new MyWidget();
QMdiSubWindow *sub=ui->mdiArea->addSubWindow(widget,Qt::SubWindow);
sub->setWindowState(Qt::WindowNoState);

但它没有达到预期的效果。

1 个答案:

答案 0 :(得分:0)

我在另一个论坛得到了帮助,找到了解决该问题的方法:

QMdiSubWindow *previous = ui->mdiArea->activeSubWindow();
QTextEdit *edit=new QTextEdit;
QMdiSubWindow *sub=ui->mdiArea->addSubWindow(edit,Qt::Window)
sub->show();
if (previous==0)
   ui->mdiArea->setActiveSubWindow(sub);
else if (previous->isWidgetType()) //I check if previous is widget, because if you close the previous tab, when the new one is opened the program crashes on the next line because previous no longer exists.
   ui->mdiArea->setActiveSubWindow(previous);