Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt: простейший пример модели QTableView [RSS Feed]

#1 Ноя. 16, 2009 08:16:59

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

PyQt: простейший пример модели QTableView

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

приведите, пожалуйста, простейший пример модели на 5 столбцов. Создал в креаторе форму с QTableView таблицей, подключил ее таким способом:

import sys

from PyQt4 import QtCore, QtGui
from ui_tria import Ui_MainWindow


class Tria(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)


if __name__ == “__main__”:
app = QtGui.QApplication(sys.argv)
myapp = Tria()
myapp.show()
sys.exit(app.exec_())

Создать заголовок и завести данные не могу понять как. Файл формы в атаче.

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



Офлайн

#2 Ноя. 18, 2009 06:35:50

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt: простейший пример модели QTableView

# -*- coding: cp1251 -*-
from PyQt4 import QtGui, 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.cached = [
['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',],
]
def rowCount(self, parent):
return len(self.cached)
def columnCount(self, parent):
return len(self.colLabels)
def data(self, index, role):
if not index.isValid():
return QtCore.QVariant()
elif role != QtCore.Qt.DisplayRole and role != QtCore.Qt.EditRole:
return QtCore.QVariant()
value = ''
if role == QtCore.Qt.DisplayRole:
row = index.row()
col = index.column()
value = self.cached[row][col]
return QtCore.QVariant(value)
def headerData(self, section, orientation, role):
if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
return QtCore.QVariant(self.colLabels[section])
return QtCore.QVariant()

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent):
QtGui.QMainWindow.__init__(self, parent)
self.table = QtGui.QTableView(self)
self.model = Model(self.table)
self.table.setModel(self.model)
self.setCentralWidget(self.table)

class App(QtGui.QApplication):
def __init__(self, argv):
QtGui.QApplication.__init__(self, argv)
self.ui = MainWindow(None)
self.ui.show()

if __name__ == "__main__":
app = App(sys.argv)
sys.exit(app.exec_())
Надеюсь к своему представлению (TableView) сами прикрутите



Офлайн

#3 Ноя. 18, 2009 14:44:45

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt: простейший пример модели QTableView

Просто выполните утилиту:
pyuic4 -o ui_tria.py ваш_файл.ui
Почитать можно здесь: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#pyuic4



Офлайн

#4 Ноя. 20, 2009 07:39:38

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

PyQt: простейший пример модели QTableView

to hellslade

фига себе простейший пример… ок, бум разбираться.

to gmorgunov

с pyuic-ок вопросов нет…

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



Офлайн

#5 Ноя. 20, 2009 08:07:05

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt: простейший пример модели QTableView

g-kit
Ну а что тут не простого? Разве что в методе data используются разные флаги, но у них названия, так сказать, “говорящие”



Офлайн

#6 Дек. 13, 2009 11:18:31

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

PyQt: простейший пример модели QTableView

А как с помощью model/view отобразить в ячейке кнопку?



Офлайн

#7 Дек. 13, 2009 16:37:59

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt: простейший пример модели QTableView

SnowWolf
видимо через QItemDelegate



Офлайн

#8 Дек. 13, 2009 18:38:00

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

PyQt: простейший пример модели QTableView

а можно примерчик, как в вашем коде в одну из ячеек вставить виджет.



Офлайн

#9 Дек. 14, 2009 17:52:24

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt: простейший пример модели QTableView

В Qt Demo есть такой примерчик
И здесь же уже обсуждалось http://python.su/forum/viewtopic.php?pid=36048#p36048



Офлайн

#10 Дек. 14, 2009 20:33:09

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

PyQt: простейший пример модели QTableView

Я видел и эту тему и этот пример. И в первую очередь я смотрел в Qt Demo.
Тот пример не получится использовать когда моделью служит QAbstractTableModel.
Надо использовать метод paint из QAbstractItemDelegate, а для него толковых примеров нет.
Я буду очень благодарен если вы мне покажете как отобразить хотя бы картинку в ячейке.



Офлайн

  • Начало
  • » GUI
  • » PyQt: простейший пример модели QTableView[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version