Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2012 16:44:54

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

reclosedev
Так собираете? Что конкретно не получается, или другие причины?
Точно не помню, что не получалось - но в итоге собрать не смог.
Я уже частично переопределил класс QAbstractTableModel, так что я доделаю этот механизм.
Вам большое спасибо за столько материала и за ответы - надеюсь осилю эту задачу.



Офлайн

#2 Авг. 24, 2012 14:24:11

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

Весь класс переопределил, но осталась одна тонкость - как вызвать слот insertRows и removeRows?
Когда вызываю через обычную связку Сигнал->слот, то параметры не приходят, которые мне нужны для формирования запроса в БД.



Офлайн

#3 Авг. 24, 2012 14:57:07

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

FroL
Весь класс переопределил, но осталась одна тонкость - как вызвать слот insertRows и removeRows?
Когда вызываю через обычную связку Сигнал->слот, то параметры не приходят, которые мне нужны для формирования запроса в БД.
Не понял, покажите код и чего не хватает для формирования запроса?

Офлайн

#4 Авг. 24, 2012 15:30:39

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

функция insertRows:

def insertRows(self, position, rows = 1, index = QtCore.QModelIndex()):
	position = len(self.cached)
        self.beginInsertRows(QtCore.QModelIndex(), position, position + rows - 1)
	
        self.cached.insert(position + rows, ['',''])
        self.endInsertRows()
        return True
Если ее вызвать связкой сигнала кнопки Clicked и слота insertRows, то параметры position и index, естественно, пустые. Но я вышел из ситуации и вставляю новую строку в конец, а не в то место где находится курсор.
С удалением все хуже - там мне нужен номер строки, которую мне надо удалить, но т.к. эти параметры пустые я не могу удалить строку.
Вот собственно вопрос - как правильно вызвать слот на удаление или как вытащить параметр номер строки?



Офлайн

#5 Авг. 24, 2012 17:47:59

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

FroL
Если ее вызвать связкой сигнала кнопки Clicked и слота insertRows, то параметры position и index, естественно, пустые. Но я вышел из ситуации и вставляю новую строку в конец, а не в то место где находится курсор.
Так незачем соединять clicked и insertRows напрямую
def connect_signals(self):
    self.buttonInsert.clicked.connect(self.on_insert_clicked)
    ...
 
def on_insert_clicked(self):
   index = self.table_view.selectionModel().currentIndex()
   model.insertRows(index.row())
Тоже самое с удалением: добавляем on_delete_clicked() и в ней получаем номер строки из view.selectionModel().currentIndex().row().
Еще нужно добавить проверки на наличие модели, наличие выделения и валидность индекса.

С position не совсем понял, она у вас переписывается в функции.

Офлайн

#6 Авг. 25, 2012 07:50:28

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

большое спасибо за ответ - буду пробывать :)

reclosedev
С position не совсем понял, она у вас переписывается в функции.
а position - это как раз и есть номер строки, в которую надо вставить пустую запись, но как вычислить row мне уже ясно ;)
reclosedev
view.selectionModel().currentIndex().row()



Отредактировано FroL (Авг. 25, 2012 07:51:16)

Офлайн

#7 Авг. 31, 2012 16:43:37

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

Все реализовал, только остались детали.
При редактировании значении ячейки она перекрывает соседние столбцы справа. Если подогнать под размер столбцы при помощи метода setStretchLastSection, то колонки получаются огромные, если размерность столбца 100 символов.
Как сделать так, что бы при редактировании та часть ячейки которая не помещается в столбце была скрыта, а не перекрывала соседние столбцы?



Офлайн

#8 Авг. 31, 2012 18:13:11

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

Можно попробовать
http://qt-project.org/doc/qt-4.8/qheaderview.html#setResizeMode
Не знаю только какой ResizeMode указывать.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version