Найти - Пользователи
Полная версия: PyQt4 + psycopg2
Начало » GUI » PyQt4 + psycopg2
1 2
FroL
reclosedev
Так собираете? Что конкретно не получается, или другие причины?
Точно не помню, что не получалось - но в итоге собрать не смог.
Я уже частично переопределил класс QAbstractTableModel, так что я доделаю этот механизм.
Вам большое спасибо за столько материала и за ответы - надеюсь осилю эту задачу.
FroL
Весь класс переопределил, но осталась одна тонкость - как вызвать слот insertRows и removeRows?
Когда вызываю через обычную связку Сигнал->слот, то параметры не приходят, которые мне нужны для формирования запроса в БД.
reclosedev
FroL
Весь класс переопределил, но осталась одна тонкость - как вызвать слот insertRows и removeRows?
Когда вызываю через обычную связку Сигнал->слот, то параметры не приходят, которые мне нужны для формирования запроса в БД.
Не понял, покажите код и чего не хватает для формирования запроса?
FroL
функция 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, естественно, пустые. Но я вышел из ситуации и вставляю новую строку в конец, а не в то место где находится курсор.
С удалением все хуже - там мне нужен номер строки, которую мне надо удалить, но т.к. эти параметры пустые я не могу удалить строку.
Вот собственно вопрос - как правильно вызвать слот на удаление или как вытащить параметр номер строки?
reclosedev
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 не совсем понял, она у вас переписывается в функции.
FroL
большое спасибо за ответ - буду пробывать :)
reclosedev
С position не совсем понял, она у вас переписывается в функции.
а position - это как раз и есть номер строки, в которую надо вставить пустую запись, но как вычислить row мне уже ясно ;)
reclosedev
view.selectionModel().currentIndex().row()
FroL
Все реализовал, только остались детали.
При редактировании значении ячейки она перекрывает соседние столбцы справа. Если подогнать под размер столбцы при помощи метода setStretchLastSection, то колонки получаются огромные, если размерность столбца 100 символов.
Как сделать так, что бы при редактировании та часть ячейки которая не помещается в столбце была скрыта, а не перекрывала соседние столбцы?
reclosedev
Можно попробовать
http://qt-project.org/doc/qt-4.8/qheaderview.html#setResizeMode
Не знаю только какой ResizeMode указывать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB