【问题标题】:PyQt4 qTableView AlignmentPyQt4 qTableView 对齐
【发布时间】: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)

'

【问题讨论】:

    标签: python qt pyqt pyqt4


    【解决方案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()

    【讨论】:

    • 非常感谢!太好了,正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多