pyqt5 tableview 左侧
时间: 2025-02-13 09:19:37 浏览: 45
### PyQt5 中自定义 TableView 的左侧部分
在 PyQt5 中,`QTableView` 组件用于展示数据模型的内容,默认情况下其左侧行头由 `QHeaderView` 控制。为了定制化这一区域,可以创建继承自 `QStyledItemDelegate` 或者直接重写 `QHeaderView` 类来改变外观行为。
对于简单的样式调整比如背景色或字体大小,可以通过设置 stylesheet 来完成[^4]:
```css
/* 设置整个行头部的颜色 */
QHeaderView::section {
background-color: #f0f0f0;
}
```
如果需求更为复杂,则可能涉及到重新绘制项委托(item delegate),即通过子类化 `QStyledItemDelegate` 并覆盖 paint 方法来自定义渲染逻辑[^1]。
另外一种方法是完全替换默认的水平/垂直头视图部件,这通常意味着编写一个新的 widget 实现所需功能并将其安装到 tableView 上作为新的 header view[^3]。
下面给出一段 Python 代码片段示范如何更改 QTableView 左侧列标题栏的文字方向以及添加点击事件处理程序:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableView, QHeaderView
import sys
class CustomHeaderView(QHeaderView):
def __init__(self, orientation, parent=None):
super().__init__(orientation, parent)
def mousePressEvent(self, event):
print('Header clicked')
super().mousePressEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout(window)
tableView = QTableView(window)
custom_header = CustomHeaderView(Qt.Vertical, tableView) # 创建自定义header
# 将新header应用至tableview
tableView.setVerticalHeader(custom_header)
# 修改文字旋转角度
custom_header.setSectionsClickable(True)
custom_header.setDefaultAlignment(Qt.AlignCenter | Qt.AlignVCenter)
layout.addWidget(tableView)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
```
此段代码展示了怎样构建一个带有特殊交互特性的垂直表头实例,并将其关联给指定的 `QTableView` 对象。同时设置了当用户单击任一项目时触发的消息输出机制[^2]。
阅读全文
相关推荐

















