PyQt4 qTableView 对齐方式
希望有人能帮我一下 - 我花了几天时间搜索,但一直没有找到解决办法...
我在使用PyQt,并且有几个qTableView来显示一些数据 - 现在我想把这些数据居中对齐。
我的代码在下面 - ui_manual_matching.table_unmatched_flights是qTableView对象。
非常感谢!
亚当
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(settings.str_combined_database)
db.open()
#CREATE AN SQL STRING TO FILTER BY (I wont bore you with the details)
flights_table_model = QSqlTableModel()
flights_table_model.setTable('eg_table')
flights_table_model.setFilter(str_eg_filter)
flights_table_model.select()
ui_manual_matching.table_unmatched_flights.setModel(flights_table_model)
'
1 个回答
2
你可以通过创建一个新的类来继承 QSqlTableModel
,并重写 data()
方法来实现这个功能。大概可以这样做:
class MySqlModel(QSqlTableModel):
def data(self, index, role=Qt.DisplayRole):
if role == Qt.TextAlignmentRole:
return Qt.AlignCenter
return QSqlTableModel.data(self,index,role)
这样做会保留你现在的 QSqlTableModel
的行为,唯一的不同是当视图请求文本对齐方式时,你的模型会返回你想要的对齐方式。当然,你可以通过使用其他的标志来选择对齐方式(查看Qt文档),甚至可以添加更多的逻辑,根据传入 data()
方法的模型索引来设置不同的对齐方式。
附注:别忘了在你的代码中实例化这个新的模型,而不是你现在使用的那个。所以把 flights_table_model = QSqlTableModel()
替换成 flights_table_model = MySqlModel()
。