如何在浮动 Dockwidgets 期间获得 focuswidget

How to get focuswidget during floating Dockwidgets

请图片:有一个MainWindow有一个dockwidget。

dockwidget 有一个 QTextEdit 对象。

Dockwidgets 可以从附加的 window 中取出并移动到任何地方。

当我编辑 QTextEdit 时,我从 QMainWindow 区域通过 focusWidget() 方法调用它,而不浮动 dockwidget。

focusWidget

<__main__.xxxxxxxxxx object at 0x000002815D638388>

这个地址是QTextEdit的一种(xxxxxxxxxx因为是我的Subclass)。

dockWidget浮动时,我用focusWidget(),

调用

<PySide.QtGui.QTabBar object at 0x000002816A206C88>

不管 dockwidget 的条件如何,我都想得到相同的 widget。

请使用QtGui.QApplication.focusWidget()

您可以从任何地方获取当前的 focusWidget。

拜托,另见此处

QtGui.QApplication.focusWidget()

:添加解决方案

上面的方法和解决方法不好

您可以将 dockwidget 的主窗口全球化,(f-ex g_win)

global g_win
g_win = mainwindow()

并且覆盖小部件的 focusInEvent()

def focusInEvent(self,event):
    ## you can get the address anywhere
    g_win.current_widget  = self
    return TheWidget.focusInEvent(self,event)

您可以拨打 g_win.current_widget 并在任何地方获取它。

之后,您可以将您的代码应用到小部件中。

请注意使用全局语句。

但主窗口可能被用作全局窗口 class。

我觉得这个最有用了