请图片:MainWindow有一个dockwidget。
dockwidget有一个QTextEdit
对象。
Dockwidgets可以从附加窗口取下并移动到任何地方。
当我编辑QTextEdit时,我通过focusWidget()
区域的QMainWindow
方法调用它而不浮动dockwidget。
<__main__.xxxxxxxxxx object at 0x000002815D638388>
这个地址是一种QTextEdit(xxxxxxxxxx,因为它是我的子类)。
在浮动dockWidget期间,我通过focusWidget()
,
<PySide.QtGui.QTabBar object at 0x000002816A206C88>
尽管有dockwidget的条件,我还想获得相同的小部件。
答案 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
并随身携带。
之后,您可以将代码用于小部件。
请注意使用全球声明。
但主窗口可能就像它是全局类一样。
这是最有用的,我认为。