如何在pyqt4中将qtableview行对齐到右侧?

发布于 2024-11-29 17:32:40 字数 1409 浏览 0 评论 0原文

如何将qtable视图的内容右对齐?我用这个类来制作我的桌子。

class MyTableModel(QAbstractTableModel):

    def __init__(self, datain, headerdata, parent=None, *args): 
        """ datain: a list of lists
            headerdata: a list of strings
        """
        QAbstractTableModel.__init__(self, parent, *args) 
        self.arraydata = datain
        self.headerdata = headerdata


    def rowCount(self, parent):
        return len(self.arraydata) 

    def columnCount(self, parent):
        try:
            return len(self.arraydata[0]) 
        except:
            return 0
    def data(self, index, role): 
        if not index.isValid():
            return QVariant() 
        elif role != Qt.DisplayRole:
            return QVariant() 
        return QVariant(self.arraydata[index.row()][index.column()]) 

    def headerData(self, col, orientation, role):

        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
                return QVariant(self.headerdata[col])
        return QVariant()

    def sort(self, Ncol, order):
        """Sort table by given column number.
        """
        self.emit(SIGNAL("layoutAboutToBeChanged()"))
        self.arraydata = sorted(self.arraydata, key=operator.itemgetter(Ncol))        
        if order == Qt.DescendingOrder:
            self.arraydata.reverse()
        self.emit(SIGNAL("layoutChanged()"))

我想在右侧对齐所有货币数据类型。 谢谢 :)

How to align the content of the qtable view in the right? I use this class in making my table.

class MyTableModel(QAbstractTableModel):

    def __init__(self, datain, headerdata, parent=None, *args): 
        """ datain: a list of lists
            headerdata: a list of strings
        """
        QAbstractTableModel.__init__(self, parent, *args) 
        self.arraydata = datain
        self.headerdata = headerdata


    def rowCount(self, parent):
        return len(self.arraydata) 

    def columnCount(self, parent):
        try:
            return len(self.arraydata[0]) 
        except:
            return 0
    def data(self, index, role): 
        if not index.isValid():
            return QVariant() 
        elif role != Qt.DisplayRole:
            return QVariant() 
        return QVariant(self.arraydata[index.row()][index.column()]) 

    def headerData(self, col, orientation, role):

        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
                return QVariant(self.headerdata[col])
        return QVariant()

    def sort(self, Ncol, order):
        """Sort table by given column number.
        """
        self.emit(SIGNAL("layoutAboutToBeChanged()"))
        self.arraydata = sorted(self.arraydata, key=operator.itemgetter(Ncol))        
        if order == Qt.DescendingOrder:
            self.arraydata.reverse()
        self.emit(SIGNAL("layoutChanged()"))

I would like to align all the currency data type in the right.
Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不爱素颜 2024-12-06 17:32:40

查看 Qt::ItemDataRole 枚举 (尤其是TextAlignmentRole)。

你可以这样做:

def data(self, index, role): 
    if index.isValid():
        return QVariant()

    if role == Qt.DisplayRole:
        return QVariant(self.arraydata[index.row()][index.column()])
    elif role == Qt.TextAlignmentRole:
        return QVariant(Qt.AlignRight | Qt.AlignVCenter)

    return QVariant() 

Take a look to the Qt::ItemDataRole enum (especially the TextAlignmentRole).

You can do something like this:

def data(self, index, role): 
    if index.isValid():
        return QVariant()

    if role == Qt.DisplayRole:
        return QVariant(self.arraydata[index.row()][index.column()])
    elif role == Qt.TextAlignmentRole:
        return QVariant(Qt.AlignRight | Qt.AlignVCenter)

    return QVariant() 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文