PyQt4 qTableView对齐

时间:2014-04-24 04:24:18

标签: python qt pyqt pyqt4

希望有人可以帮助我 - 我已经花了几天时间搜索但是没有运气......

我使用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 个答案:

答案 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()