PyQT - Группировка ячеек в QTableWidget - PullRequest
0 голосов
/ 27 августа 2018

Я ищу, как создать заголовки, такие как HTML-таблицы в QTableWidget, что-то вроде этого: enter image description here

Я могу сделать это в QTextEdit (HTML-таблица с изображениями вячеек), но мне нужны такие ячейки:

enter image description here

, поэтому QTextEdit для этого не подходит.Возможно ли это вообще, и если да, то как я могу его создать?Может быть, не QTableWidget, мне просто нужна редактируемая таблица с пользовательскими ячейками и пользовательским заголовком.

Все, что я вижу, это просто вставить одно большое изображение заголовка и установить все столбцы в соответствии с этим изображением, но как создать одну строку с одной ячейкой в ​​нем?

enter image description here

1 Ответ

0 голосов
/ 27 августа 2018

QTableView.setSpan (строка, столбец, rowSpan, columnSpan)

Параметры:
row - PySide.QtCore.int
column - PySide.QtCore.int
rowSpan- PySide.QtCore.int
columnSpan - PySide.QtCore.int

Устанавливает диапазон элемента таблицы в (строка, столбец) равным количеству строк и столбцов, указанному в (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_())

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...