Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 20, 2012 07:43:31

g-kit
От:
Зарегистрирован: 2009-11-16
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Убрать Qspinbox из QTableView

Приветствую,

создал QTableView, а при редактировании ячеек появляется QSpinBox, который мне нафиг не нужен. В таблице присутсвуют делегаты, но совсем не спинбокс и не для тех колонок… Гугл толком разЪяснить не может, а я не могу понять: это такая фича или моя ошибка кода? В любом случае интересует как его убрать оттуда..

спасибо,
-вадим



Офлайн

#2 Апрель 20, 2012 09:37:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Убрать Qspinbox из QTableView

g-kit
Приветствую,

создал QTableView, а при редактировании ячеек появляется QSpinBox, который мне нафиг не нужен. В таблице присутсвуют делегаты, но совсем не спинбокс и не для тех колонок… Гугл толком разЪяснить не может, а я не могу понять: это такая фича или моя ошибка кода? В любом случае интересует как его убрать оттуда..

спасибо,
-вадим
Код покажи, вадим



Офлайн

#3 Апрель 20, 2012 12:07:00

g-kit
От:
Зарегистрирован: 2009-11-16
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Убрать Qspinbox из QTableView

показую. Код делегата:

class emsShipDelegate(QtGui.QItemDelegate):
    def __init__(self, parent=None):
        super(emsShipDelegate, self).__init__(parent)
    def createEditor(self, parent, option, index):
        if index.column() == EMISSIONTYPE:
            combobox = QtGui.QComboBox(parent)
            combobox.insertItem(1, QtGui.QApplication.translate("MainWindow", "Пост.", None, QtGui.QApplication.UnicodeUTF8))
            combobox.insertItem(2, QtGui.QApplication.translate("MainWindow", "Залп.", None, QtGui.QApplication.UnicodeUTF8))
            combobox.setEditable(False)
            return combobox
        else:
            return QtGui.QItemDelegate.createEditor(self, parent, option, index)
    def setEditorData(self, editor, index):
        text = index.model().data(index, QtCore.Qt.DisplayRole).toString()
        if index.column() == EMISSIONTYPE:
            i = editor.findText(text)
            if i== -1:
                i = 0
            editor.setCurrentIndex(i)
        else:
            QtGui.QItemDelegate.setEditorData(self, editor, index)
    def setModelData(self, editor, model, index):
        if index.column() == EMISSIONTYPE:
            model.setData(index, QtCore.QVariant(editor.currentText()))
        else:
            QtGui.QItemDelegate.setModelData(self, editor, model, index)



Офлайн

#4 Апрель 20, 2012 14:40:06

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Убрать Qspinbox из QTableView

Я не знаю как Вам помочь на основании предоставленных данных.



Офлайн

#5 Апрель 21, 2012 06:45:41

g-kit
От:
Зарегистрирован: 2009-11-16
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Убрать Qspinbox из QTableView

а по этим данным тоже ничего не видно? код не маленький чтобы его сюда весь пихать…

class  frmTableModel(QtCore.QAbstractTableModel):
    def __init__(self, fileName = QtCore.QString()):
        super (frmTableModel, self).__init__()
        self.ships = []
        self.fileName = fileName
        self.dirty = True
#        self.srcCodes = set ()
#        self.countries = set()
    def rowCount (self, index=QtCore.QModelIndex()):
        return len(self.ships)
#        return 5
    def columnCount (self, index=QtCore.QModelIndex()):
        return 5
    def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.DisplayRole:
            return
        if orientation == QtCore.Qt.Horizontal:
            if section == SRCFRMCODE:
                return (QtGui.QApplication.translate("MainWindow", "№ дж. вик. (прих.)", None, QtGui.QApplication.UnicodeUTF8))
            elif section == FRMCODE:
                return (QtGui.QApplication.translate("MainWindow", "№ дж. утв. (прих.)", None, QtGui.QApplication.UnicodeUTF8))
            elif section == FORMATIONSRCNAME:
                return (QtGui.QApplication.translate("MainWindow", "Найм. дж. утв.", None, QtGui.QApplication.UnicodeUTF8))
            elif section == EVOLVINGGASDEPLETION:
                return (QtGui.QApplication.translate("MainWindow", "Витрата ПГВС, м3/с", None, QtGui.QApplication.UnicodeUTF8))
            elif section == EVOLVINGGASTEMPERATURE:
                return (QtGui.QApplication.translate("MainWindow", "Темпер., 0С, ", None, QtGui.QApplication.UnicodeUTF8))
        return int(section + 1)
    def data (self, index, role=QtCore.Qt.DisplayRole):
        if index.isValid() and 0 <= index.row() < len(self.ships):
            ship = self.ships [index.row()]
            column = index.column()
            if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
                if column == SRCFRMCODE:
                    return QtCore.QVariant(ship.srcFrmCode)
                elif column == FRMCODE:
                    return QtCore.QVariant(ship.frmCode)
                elif column == FORMATIONSRCNAME:
                    return QtCore.QVariant(ship.formationSrcName)
                elif column == EVOLVINGGASDEPLETION:
                    return QtCore.QVariant(ship.evolvingGasDepletion)
                elif column == EVOLVINGGASTEMPERATURE:
                    return QtCore.QVariant(ship.evolvingGasTemperature)
            return QtCore.QVariant()
        return QtCore.QVariant()
    def flags(self, index):
        if not index.isValid():
            return QtCore.Qt.ItemIsEnabled
        return QtCore.Qt.ItemFlags(QtCore.QAbstractTableModel.flags(self, index)|QtCore.Qt.ItemIsEditable)
    def setData (self, index, value, role=QtCore.Qt.DisplayRole):
        if index.isValid() and 0 <= index.row() < len (self.ships):
            ship = self.ships [index.row()]
            column = index.column()
            if column == SRCFRMCODE:
                value, ok =  value.toInt()
                if ok:
                    ship.srcFrmCode = value
            elif column == FRMCODE:
                value, ok =  value.toInt()
                if ok:
                    ship.frmCode = value
            elif column == FORMATIONSRCNAME:
                ship.formationSrcName = value.toString()
            elif column == EVOLVINGGASDEPLETION:
                ship.evolvingGasDepletion = value.toDouble()[0]
            elif column == EVOLVINGGASTEMPERATURE:
                ship.evolvingGasTemperature = value.toDouble()[0]
            self.dirty = True
            self.emit(QtCore.SIGNAL("dataChanged(QModelIndex, QModelIndex)"), index, index)
            return True
        return False
    def insertRows (self, position, indexSrcCode, nextFrmCode, rows=1, index=QtCore.QModelIndex()):
        self.beginInsertRows(QtCore.QModelIndex(), position, position + rows - 1)
        for row in range(rows):
            self.ships.insert(position + row, frmShip(indexSrcCode, nextFrmCode, u"Джерело утворення", 0, 0))
        self.endInsertRows()
        self.dirty = True
        return True
    def removeRows(self, position, rows, index=QtCore.QModelIndex()):
        self.beginRemoveRows(QtCore.QModelIndex(), position, position + rows - 1)
        self.ships = self.ships[:position] + self.ships [position + rows:]
        self.endRemoveRows()
        self.dirty = True
        return True



Офлайн

#6 Апрель 21, 2012 07:40:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Убрать Qspinbox из QTableView

g-kit
код не маленький чтобы его сюда весь пихать…
Можно запихать файл вложением. Потому что очень хочется его запустить и посмотреть, что же там у тебя не так. Согласись, это же не задачка на сортировку пузырьком из пяти строчек, где просто взглядом можно зацепиться за ошибку. У тебя неправильно отрисовывается ГУЙ, ну и как скажи тебе помочь, если вместо ГУЯ я вижу обрывки кода?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version