我有一个在后台运行的功能,并在QMdiArea
中添加了标签。但是,当添加新选项卡时,它会从当前活动选项卡中窃取焦点。有没有办法可以添加一个新的非活动选项卡(子窗口),所以我将焦点保持在当前使用的选项卡上?
我在网上搜索过但无法找到与此问题相关的任何内容。
我尝试了以下内容:
MyWidget *widget=new MyWidget();
QMdiSubWindow *sub=ui->mdiArea->addSubWindow(widget,Qt::SubWindow);
sub->setWindowState(Qt::WindowNoState);
但它没有达到预期的效果。
答案 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);