Если вы удалите часть своей логики, где вы используете HorizontalHeaderItem () и setHor horizontalHeaderItem (), ваш код продолжит работать, поэтому использование этих элементов никогда не решало вашу проблему. Чтобы убедиться в этом, замените метод setupUi () следующим кодом:
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.mainWidget = QtWidgets.QWidget()
self.mytable = QtWidgets.QTableWidget(self.mainWidget)
self.mytable.setColumnCount(1)
self.mytable.setRowCount(2)
self.my_edit_btn = QtWidgets.QPushButton('Edit')
self.my_edit_btn.clicked.connect(self.button_A_pressed)
self.mytable.setCellWidget(0, 0, self.my_edit_btn)
self.my_edit_btn = QtWidgets.QPushButton('Edit')
self.my_edit_btn.clicked.connect(self.button_B_pressed)
self.mytable.setCellWidget(1, 0, self.my_edit_btn)
self.verticalLayout.addWidget(self.mytable)
MainWindow.setCentralWidget(self.centralwidget)
что такое горизонтальный заголовок элемента?
QTableWidgetItem - это класс, который позволяет вам простым способом изменять информацию QTableWidget, абстрагируя, что такое QModelIndex и модель. То есть это слой, который позволяет нам взаимодействовать с моделью, не зная, что это за модель, это также идея QTableWidget.
Но какова реальная цель QTableWidget.horizontHeaderItem?
В случае заголовка он также содержит информацию, например, если мы хотим установить шрифт, некоторый текст и т. Д. Поэтому с ним также связан QTableWidgetItem, который взаимодействует с методами headerData () и setHeaderData () из внутренняя модель. Итак, в заключение, метод setHor horizontalHeaderItem позволяет установить QTableWidgetItem, который будет иметь информацию, связанную с горизонтальным заголовком.
from PyQt5 import QtCore, QtGui, QtWidgets
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QTableWidget(10, 10)
header_item = QtWidgets.QTableWidgetItem("Foo")
font = QtGui.QFont("arial", 20)
font.setBold(True)
font.setItalic(True)
header_item.setFont(font)
w.setHorizontalHeaderItem(1, header_item)
w.show()
sys.exit(app.exec_())
Зачем мне использовать его вместо QTableWidget.item? Как я уже говорил, использование HorizontalHeaderItem не было вашим решением.