PyQt4 qTableView 对齐
Posted
技术标签:
【中文标题】PyQt4 qTableView 对齐【英文标题】:PyQt4 qTableView Alignment 【发布时间】:2014-04-24 04:24:17 【问题描述】:希望有人可以帮助我 - 我已经花了几天时间搜索但没有任何运气......
我正在使用 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)
'
【问题讨论】:
【参考方案1】:您应该能够通过继承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()
方法的模型索引设置不同的对齐方式。
附:不要忘记在您的代码中实例化这个新模型而不是您现在使用的模型。所以把flights_table_model = QSqlTableModel()
换成flights_table_model = MySqlModel()
【讨论】:
非常感谢!太好了,正是我想要的。以上是关于PyQt4 qTableView 对齐的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4 - QTableView - 如何循环 QTableView