C++ Qt-设置浮动QDockWidget上的焦点

C++ Qt-设置浮动QDockWidget上的焦点,c++,qt,focus,floating,qdockwidget,C++,Qt,Focus,Floating,Qdockwidget,我的基本过程是创建一个浮动船坞小部件,然后尝试对其进行关注。我发现,只要它停靠在主窗口中,它就会按预期工作,但是一旦我调用它,它将不再被正确调用 我使用Qt 5.14和C++。< /P> 这是我的方法的相关代码 DockPanel::DockPanel(QWidget*父控件、QWidget*保持控件、QString标题、bool弹出窗口): QDockWidget(父级), 弹出(弹出) { setObjectName(标题); setFeatures(QDockWidget::DockWid

我的基本过程是创建一个浮动船坞小部件,然后尝试对其进行关注。我发现,只要它停靠在主窗口中,它就会按预期工作,但是一旦我调用它,它将不再被正确调用

<>我使用Qt 5.14和C++。< /P> 这是我的方法的相关代码

DockPanel::DockPanel(QWidget*父控件、QWidget*保持控件、QString标题、bool弹出窗口):
QDockWidget(父级),
弹出(弹出)
{
setObjectName(标题);
setFeatures(QDockWidget::DockWidgetMovable);
DockPanelTitle*面板标题=新DockPanelTitle(本,标题);
setTitleBarWidget(面板标题);
setWidget(hold_widget);
如果(弹出)
{
setFocusPolicy(Qt::StrongFocus);
设置浮动(真);
setFocus();
}
}
void WindowToolBarButton::mousePressEvent(QMouseEvent*e)
{
QMainWindow*cw=window()->findChild(“CentralWindow”);
HolderWidget*widget_a=新的HolderWidget(this);
QPoint m=window()->mapToGlobal(cw->pos());
DockPanel*panel_a=新的DockPanel(cw、小部件_a、btn_标签->文本(),true);
面板a->setGeometry(m.x(),m.y(),300,cw->height());
cw->addDockWidget(Qt::RightDockWidgetArea,面板a);
cw->setFocus();
QWidget*w=qApp->focusWidget();
对于(DockPanel*child:w->findChildren())
{   
child->setFocus();
QString s=child->objectName();
标准::cout
void WindowToolBarButton::mousePressEvent(QMouseEvent * e)
{
    QMainWindow * cw = window()->findChild<QMainWindow *>("CentralWindow");
    HolderWidget * widget_a = new HolderWidget(this);
    QPoint m = window()->mapToGlobal(cw->pos());    

    DockPanel * panel_a = new DockPanel(cw, widget_a, btn_label->text(), true);
    panel_a->setGeometry(m.x(), m.y(), 300, cw->height());

    cw->addDockWidget(Qt::RightDockWidgetArea, panel_a);

    cw->setFocus();
    QWidget * w = qApp->focusWidget();
    for (DockPanel * child : w->findChildren<DockPanel *>())
    {   
        child->setFocus();
        QString s = child->objectName();
        std::cout << "Widget: " + s.toStdString() + " has focus " << child->hasFocus() << std::endl;
    }
}