Qtablemodel выровнять заголовки

При создании подкласса QSqlTableModel возможно ли выравнивание заголовков по правому краю?

class SclDataModel(QSqlTableModel):
    def __init__(self, parent=None):
        super(SclDataModel, self).__init__(parent)
        self.setTable("scldata")
        self.setEditStrategy(QSqlTableModel.OnManualSubmit)
        self.setHeaderData(0, Qt.Horizontal, 'recordid')
        self.setHeaderData(1, Qt.Horizontal, 'svcdataid')
        self.setHeaderData(2, Qt.Horizontal, 'Receipts Start')
        self.setHeaderData(3, Qt.Horizontal, 'Receipts End')
        self.setHeaderData(4, Qt.Horizontal, 'Billing Rate')

    def headerData(self, p_int, Qt_Orientation, role=None):
        #Need to right align the headers
1
0
147
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно только вернуть желаемое выравнивание, когда запрашивается роль Qt::TextAlignmentRole:

class SclDataModel(QtSql.QSqlTableModel):
    def __init__(self, parent=None):
        super(SclDataModel, self).__init__(parent)
        self.setTable("scldata")
        self.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
        self.setHeaderData(0, QtCore.Qt.Horizontal, 'recordid')
        self.setHeaderData(1, QtCore.Qt.Horizontal, 'svcdataid')
        self.setHeaderData(2, QtCore.Qt.Horizontal, 'Receipts Start')
        self.setHeaderData(3, QtCore.Qt.Horizontal, 'Receipts End')
        self.setHeaderData(4, QtCore.Qt.Horizontal, 'Billing Rate')

    def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
        if role == QtCore.Qt.TextAlignmentRole and orientation == QtCore.Qt.Horizontal:
            return QtCore.Qt.AlignRight
        return super(SclDataModel, self).headerData(section, orientation, role)

Обновить:

Если вы хотите, чтобы конкретный столбец фильтровался только с использованием раздела, запомните, какой раздел начинается с 0, например, следующий код изменяет выравнивание только для второго столбца:

def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
    if role == QtCore.Qt.TextAlignmentRole and orientation == QtCore.Qt.Horizontal and section == 1:
        return QtCore.Qt.AlignRight
    return super(SclDataModel, self).headerData(section, orientation, role)

Спасибо eyllanecs. Что, если я хочу, чтобы только заголовок в столбце 2 был выровнен по правому краю?

Elcid_91 31.10.2018 12:54

Идеально. Спасибо eyllanesc !!

Elcid_91 31.10.2018 12:59

Другие вопросы по теме