我正在搜索如何在QTableWidget中创建诸如HTML表之类的标头,诸如此类:
我可以在QTextEdit(在单元格中包含图像的HTML表)中进行创建,但是我需要这样的自定义单元格:
因此QTextEdit不适合此。有没有可能,如果可以,我如何创建它?也许不是QTableWidget,我只需要带有自定义单元格和自定义标题的可编辑表。
我所看到的只是插入一个大页眉图像并根据该图像设置所有列,但是如何创建其中包含一个单元格的一行?
答案 0 :(得分:1)
QTableView.setSpan(行,列,行跨度,列跨度)
参数:
行– PySide.QtCore.int
列– PySide.QtCore.int
rowSpan – PySide.QtCore.int
columnSpan – PySide.QtCore.int将(row,column)处的表格元素的跨度设置为(rowSpanCount,columnSpanCount)指定的行数和列数。
import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem )
from PyQt5.QtGui import QBrush, QColor #, QFont
class Table(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("QTableWidget - Example of a cell merge")
self.resize(660,300 );
conLayout = QHBoxLayout()
tableWidget = QTableWidget()
tableWidget.setRowCount(7)
tableWidget.setColumnCount(6)
conLayout.addWidget(tableWidget)
# Hide headers
tableWidget.horizontalHeader().setVisible(False)
tableWidget.verticalHeader().setVisible(False)
#tableWidget.setHorizontalHeaderLabels(['Column1','Column1','Column1'])
# Sets the span of the table element at (row , column ) to the number of rows
# and columns specified by (rowSpanCount , columnSpanCount ).
tableWidget.setSpan(0, 0, 1, 6)
newItem = QTableWidgetItem("tableWidget.setSpan(0, 0, 1, 6)")
tableWidget.setItem(0, 0, newItem)
tableWidget.setSpan(3, 0, 3, 1)
newItem = QTableWidgetItem("tableWidget.setSpan(3, 0, 3, 1)")
tableWidget.setItem(3, 0, newItem)
newItem = QTableWidgetItem("Hello")
newItem.setForeground(QBrush(QColor(0, 255, 0)))
tableWidget.setItem(3, 1, newItem)
newItem = QTableWidgetItem("pythoff")
newItem.setForeground(QBrush(QColor(255, 0, 0)))
tableWidget.setItem(3, 2, newItem)
self.setLayout(conLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
example = Table()
example.show()
sys.exit(app.exec_())