0

バックグラウンドで実行され、 にタブを追加する機能がありますQMdiArea。ただし、新しいタブが追加されると、現在アクティブなタブからフォーカスが奪われます。新しい非アクティブなタブ (サブ ウィンドウ) を追加して、現在使用されているタブにフォーカスを維持する方法はありますか?

Web を検索しましたが、この問題に関連するものは見つかりませんでした。

私は次のことを試しました:

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 に答える