1

QTableWidget では、すべての値を小数点以下 2 桁で表示したいと考えています。そのために、QTableWidgetItem をサブクラス化しました。

class MyCell(QTableWidgetItem):
    def __init__(self, *args):
        QTableWidgetItem.__init__(self, *args)

    def clone(self):
        return MyCell()

    def data(self, role):
        t = QTableWidgetItem(self).data(role)
        if role == 0:
            if t.type() != 0:
                try:
                    a, b = str(t.toString()).split('.')
                    return QVariant( ".".join([a,b[:2]]))
                except:
                    return t
         return t

ドキュメントを読んで、次のようなものを使用できると考えていました。

class MyDialog(QDialog):
    def __init__(self, parent=None):
         super(MyDialog, self).__init__(parent)

         self.table = QTableWidget()
         acell = MyCell()
         self.table.setItemPrototype(acell)

         self.table.setRowCount(5)
         self.table.setColumnCount(5)
         ....

しかし、これは多かれ少なかれランダムにクラッシュします。メソッド self.table.setItem を使用すると、問題なく動作します。ヒントをいただければ幸いです。

4

1 に答える 1