Как добавить SubWindow в QMdiArea (установить в режим TAB), не снимая фокус с активной в данный момент вкладки?

У меня есть функция, которая работает в фоновом режиме и добавляет вкладки в QMdiArea, Однако, когда добавляется новая вкладка, она крадет фокус с текущей активной вкладки. Есть ли способ, которым я могу добавить новую неактивную вкладку (подокно), чтобы я оставил фокус на текущей используемой вкладке?

Я искал в Интернете, но не смог найти ничего, связанного с этой проблемой.

Я пробовал следующее:

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

но это не дает желаемого эффекта.

1 ответ

Решение

Я получил помощь на другом форуме и нашел решение этой проблемы:

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);
Другие вопросы по тегам