У меня есть виджет QLineEdit, в котором вы можете редактировать текст программным способом или с помощью пользовательского ввода.
Хотя мне удалось заставить работать метод пользовательского ввода, у меня возникают проблемы с программным способомгде tabRect
все еще действуют после использования setText
.
QLineEdit / tabRect происходит поверх переименования вкладок QTabBar.
def _renameTab(self, index, new_name=""):
self._edited_tab_index = index
if self._edited_tab_index != self.currentIndex():
self.setCurrentIndex(self._edited_tab_index)
rect = self.tabRect(index)
top_margin = 3
left_margin = 6
self._rename_line_edit = QtGui.QLineEdit(self)
self._rename_line_edit.show()
self._rename_line_edit.move(
rect.left() + left_margin, rect.top() + top_margin
)
self._rename_line_edit.resize(
rect.width() - 2 * left_margin, rect.height() - 2 * top_margin
)
if new_name:
self._rename_line_edit.setText(new_name)
# self._rename_line_edit.clearFocus()
# self._rename_line_edit.textEdited.connect(self._renameTabFinished)
else:
self._rename_line_edit.setText(self.tabText(index))
self._rename_line_edit.selectAll()
self._rename_line_edit.setFocus()
self._rename_line_edit.editingFinished.connect(self._renameTabFinished)
self.currentChanged.connect(self._renameTabFinished)
Пробовал с помощью clearFocus
, который, кажется, не помогает.
Есть ли способ, которым я могу имитировать returnPressed
в QLineEdit, аналогично toggle()
или trigger()
?