使用QTableWidget,我可以做到
table = QTableWidget()
table.setHorizontalHeaderLabels(QString("Name;Age;Sex;Add").split(";"))
table.horizontalHeaderItem().setTextAlignment(Qt.AlignHCenter)
Run Code Online (Sandbox Code Playgroud)
我怎么能用QTableView做同样的事情?
Bre*_*bel 26
表/树/列表小组件是基于项目的.表/树/列表视图是基于视图/模型的(有时称为MVC,用于模型/视图/控制器).在模型/视图系统中,数据在模型上设置和操作,视图只显示它.要使用View小部件,还必须创建一个模型类.在许多情况下,人们将从中创建自己的子类QAbstractItemModel,但您不必这样做.Qt提供了一个非抽象模型,可以与所有视图类一起使用 - QStandardItemModel.
model = QStandardItemModel()
model.setHorizontalHeaderLabels(['Name', 'Age', 'Sex', 'Add'])
table = QTableView()
table.setModel(model)
Run Code Online (Sandbox Code Playgroud)
有几种方法可以做对齐.模型中实际支持对齐数据,但是标题视图允许您设置默认值(我猜它如果未在模型中设置对齐数据则使用它)
header = table.horizontalHeader()
header.setDefaultAlignment(Qt.AlignHCenter)
Run Code Online (Sandbox Code Playgroud)
要获得更多控制,您可以直接在模型上设置对齐数据.
# Sets different alignment data just on the first column
model.setHeaderData(0, Qt.Horizontal, Qt.AlignJustify, Qt.TextAlignmentRole)
Run Code Online (Sandbox Code Playgroud)
但View/Model系统的强大之处在于视图可以选择以任何方式显示模型中的数据.如果要创建自己的自定义视图,可以绝对控制每列中文本的对齐和显示方式.
| 归档时间: |
|
| 查看次数: |
19848 次 |
| 最近记录: |