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 标头名称

PyQt4 - QTableView - 如何循环 QTableView

基于 PyQt4 QTableView 模型

PyQt4中的QTableView选定元素

在 qtableview pyqt4 python 中使用图像委托?

如何将 QLineEdit 放入 QTableView 单元格 PyQt4?