В настоящее время у меня проблемы с фокусировкой табулированных QDockWidgets.
Работа с этим небольшим примером с использованием двух таблиц QDockWidgets:
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit
from PyQt5.Qt import Qt
app = QApplication( [] )
main = QMainWindow(None, Qt.Window)
main.show()
dock1 = QDockWidget( "D1", main )
dock1.setWidget( QTextEdit( dock1 ) )
main.addDockWidget( Qt.TopDockWidgetArea, dock1 )
dock2 = QDockWidget( "D2", main )
dock2.setWidget( QTextEdit( dock2 ) )
main.tabifyDockWidget( dock1, dock2 )
exit( app.exec() )
Я обнаружил, что QTextEdits
не теряет фокус при переключении на другую вкладку виджетов с таблицами.
- написать текст в одно из полей
- нажмите на другую вкладку на QTabBar
- продолжить ввод с клавиатуры
Второй текст, который вы написали, все еще был в фокусе первого виджета.
Итак, в целом:
Есть ли способ потерять фокус виджетов, помеченных в виде таблицы, независимо от того, является ли это QTextEdit
или каким-либо другим виджетом (ями) (возможно, даже со сложной структурой дочернего макета)?
Я попытался clearFocus()
на QDockWidget
, но, похоже, это работает, если QDockWidget itselfe содержит фокус (не дочерний).
Использование setFocus()
ранее также не кажется хорошим вариантом, поскольку виджет (или его дочерние элементы) может не содержать фокус в каждом случае. Так что было бы неуместно украсть его у какого-нибудь другого виджета.
Я думаю, что лучшие анкеры, на которые можно было бы реагировать, были бы:
и если вы захотите найти динамически создаваемый QTabBar: