Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 18, 2014 12:05:26

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

rom PyQt4 import QtGui
class window(QtGui.QWidget):
    def __init__(sf):
        QtGui.QWidget.__init__(sf)
        sf.setWindowTitle("Прикрепление источника данных к комбобоксу")
        sf.resize(400, 400)
        sf.layout = QtGui.QVBoxLayout()
        sf.setLayout(sf.layout)
        sf.model = QtGui.QStandardItemModel(5, 2)
        sf.fillmodel()
        
        sf.combo = QtGui.QComboBox()
        sf.combo.setModel(sf.model)
        sf.combo.setModelColumn(1)
        sf.layout.addWidget(sf.combo)
        sf.view2 = QtGui.QTableView()
        sf.view2.setModel(sf.model)
        sf.layout.addWidget(sf.view2)
        sf.combo2 = QtGui.QComboBox()
        sf.combo2.setView(sf.view2)
        sf.layout.addWidget(sf.combo2)
        sf.layout.addStretch()
    def fillmodel(sf):
        mass = [[1, "Один"],
                [2, "Два"],
                [3, "Три"],
                [4, "Четыре"],
                [5, "Пять"]]
        sf.model.setHorizontalHeaderItem(0, QtGui.QStandardItem("Номер"))
        sf.model.setHorizontalHeaderItem(1, QtGui.QStandardItem("Описание"))
        
        for number, string in mass:
            sf.model.setItem(number-1, 0, QtGui.QStandardItem(str(number)))
            sf.model.setItem(number-1, 1, QtGui.QStandardItem(string))
        for i in range(sf.model.rowCount()):
            print (sf.model.item(i, 0).text(), sf.model.item(i, 1).text())
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    win = window()
    win.show()
    sys.exit(app.exec_())

Почему combo2 не желает показывать модель? Зачем у комбобокса есть метод setView тогда?

Офлайн

#2 Сен. 18, 2014 12:06:02

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

К sf не придираться! Мне религия не позволяет писать self!

Офлайн

#3 Сен. 18, 2014 13:14:09

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

Скажите, почему view2 вообще не показывается на форме как отдельный виджет? Что не так?

Офлайн

#4 Сен. 18, 2014 14:24:16

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

sf.combo2 = QtGui.QComboBox()
# sf.combo2.setView(sf.view2)
sf.layout.addWidget(sf.view2)
sf.layout.addWidget(sf.combo2)
вот так, отображается

Офлайн

#5 Сен. 18, 2014 20:21:58

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

> Почему combo2 не желает показывать модель?
Наверно потому что у него нет модели. Она только у sf.combo. Так заработает:

sf.combo2.setModel(sf.model)

> К sf не придираться! Мне религия не позволяет писать self!
На костёр!



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Сен. 18, 2014 20:23:20)

Офлайн

#6 Сен. 19, 2014 04:46:06

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  2  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

Я уж сам разобрался почему представление не показывалось на форме. Модель может использоваться и одна, а вот представления для разных объектов должны создаваться для каждого свой экземпляр.

Но, таки, combobox не умеет работать с представлением (view)? Зачем же у него есть метод setView?

Rodegast
На костёр!
Слава sf!

Офлайн

#7 Сен. 19, 2014 13:30:10

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

QComboBox и QTableView. Как подружить?

Ты только про костёр прочитал?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version