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

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

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

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

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

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


person dv8    schedule 28.01.2013    source источник


Ответы (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);
person dv8    schedule 30.01.2013