希望有人可以帮助我 - 我已经花了几天时间搜索但是没有运气......
我使用PyQt和一些qTableViews来显示一些数据 - 现在我想在中心对齐这些数据。
我的代码如下 - 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)
'
答案 0 :(得分: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
的行为,但是当视图要求文本对齐时,模型会返回您想要的对齐方式。您当然可以使用其他标志之一(see the Qt documentation)来选择对齐,甚至可以根据传递到data()
方法的模型索引添加更多逻辑来设置不同的对齐。
P.S。不要忘记在代码中实例化这个新模型,而不是现在使用的模型。因此,将flights_table_model = QSqlTableModel()
替换为flights_table_model = MySqlModel()