PyQt5 DoubleSpinBox в QTableView - PullRequest
       10

PyQt5 DoubleSpinBox в QTableView

0 голосов
/ 06 ноября 2018

Использование PyQt5 для настройки делегата редактора в качестве QDoubleSpinBox:

class MoneyDelegate(QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super(MoneyDelegate, self).initStyleOption(option, index)
        val = float(index.data())
        option.text = '${:,.2f}'.format(val)
        option.displayAlignment = Qt.AlignVCenter | Qt.AlignRight

    def createEditor(self, QWidget, QStyleOptionViewItem, QModelIndex):
        super(MoneyDelegate, self).createEditor(QWidget, QStyleOptionViewItem, QModelIndex)
        editor = QDoubleSpinBox(self)
        editor.setMinimum(.01)
        editor.setMaximum(999999.99)
        return(editor)

В моем классе QTableWidget:

self.tbl_View.setItemDelegateForColumn(2, MoneyDelegate(self))

У меня проблема в том, что редактор отображается в верхнем левом углу экрана в виде отдельного диалога. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 06 ноября 2018

Не используйте QWidget, QStyleOptionViewItem и QModelIndex в качестве имени параметров функции, так как они являются именами классов, и вы их запутываете. С другой стороны, вы должны передать в качестве родителя редактора первый параметр createEditor():

def createEditor(self, parent, option, index):
    editor = QDoubleSpinBox(parent)
    editor.setMinimum(.01)
    editor.setMaximum(999999.99)
    return editor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...