crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> PyQt model
Trisch
  опции профиля:
сообщение 20.10.2014, 17:35
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Имеется таблица. Данная таблица заполняется данными с помощью модели.

Вот примерный код:

ModelTable.py
Раскрывающийся текст

from PyQt4 import QtCore
import sys

class Model(QtCore.QAbstractTableModel):
    def __init__(self, parent):
        QtCore.QAbstractTableModel.__init__(self)
        self.gui = parent
        self.colLabels = ['Col1', 'Col2', 'Col3', 'Col4', 'Col5']
        self.data = [
                        ['cell11','cell12','cell13','cell14','cell15'],
                        ['cell21','cell22','cell23','cell24','cell25'],
                        ['cell31','cell32','cell33','cell34','cell35'],
                        ['cell41','cell42','cell43','cell44','cell45'],
                        ['cell51','cell52','cell53','cell54','cell55'],
                        ['cell61','cell62','cell63','cell64','cell65'],
                        ['cell71','cell72','cell73','cell74','cell75'],
                        ['cell81','cell82','cell83','cell84','cell85'],
            ['cell81','cell82','cell83','cell84','cell85']
                    ]
    
    def rowCount(self, parent):
        return len(self.data)

    def columnCount(self, parent):
        return len(self.colLabels)

    def data(self, index, role):
        if not index.isValid():
            return ""
        elif role != QtCore.Qt.DisplayRole and role != QtCore.Qt.EditRole:
            return ""
        value = ''
        if role == QtCore.Qt.DisplayRole:
            row = index.row()
            col = index.column()
            value = self.data[row][col]
        return value

    def headerData(self, section, orientation, role):
        if (orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole):
           return self.colLabels[section]
        return "1"



Table.py
Раскрывающийся текст

from PyQt4 import QtCore, QtGui, uic
from ModelTable import Model

class Table(QtGui.QTableView):
    def __init__(self, parent = None):
        QtGui.QTableView.__init__(self, parent)
        
        self.model = Model(self)
        self.setModel(self.model)



и вот в каждой ячейке почему-то отображается что-то вроде CheckBox-са. Вот как от них можно избавиться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 20.10.2014, 21:54
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Я считаю, что "" это валидный вариант, в том числе для Qt::CheckStateRole.
Надо возвращать невалидный вариант.
Например QtCore.QVariant()
Не помню точно, могу наделать ошибок.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 23.10.2014, 18:38
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


QtCore.QVariant() данную проблему решил, но python на него ругается:
TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 23.10.2014, 19:19
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


QtCore.QPyNullVariant
http://pyqt.sourceforge.net/Docs/PyQt4/qpy...#QPyNullVariant
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 22:36