0

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

我已经在网上搜索过,但找不到与此问题相关的任何内容。

我尝试了以下方法:

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

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

4

1 回答 1

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);
于 2013-01-30T06:21:02.727 回答