如何在浮动Dockwidgets期间获取focuswidget

时间:2018-03-27 01:05:34

标签: qt pyqt pyside

请图片:MainWindow有一个dockwidget。

dockwidget有一个QTextEdit对象。

Dockwidgets可以从附加窗口取下并移动到任何地方。

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

focusWidget

<__main__.xxxxxxxxxx object at 0x000002815D638388>

这个地址是一种QTextEdit(xxxxxxxxxx,因为它是我的子类)。

在浮动dockWidget期间,我通过focusWidget()

调用它

<PySide.QtGui.QTabBar object at 0x000002816A206C88>

尽管有dockwidget的条件,我还想获得相同的小部件。

1 个答案:

答案 0 :(得分:0)

请使用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并随身携带。

之后,您可以将代码用于小部件。

请注意使用全球声明。

但主窗口可能就像它是全局类一样。

这是最有用的,我认为。