Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » QtGui.QTableView.selectionChanged() криво работает при переопределении. [RSS Feed]

#1 Авг. 9, 2012 15:37:24

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

QtGui.QTableView.selectionChanged() криво работает при переопределении.

привет всем.
вот код:

class Table(QtGui.QTableView):
	cellChanged = QtCore.pyqtSignal(str, name = 'cellChanged')
	def __init__(self, parent = None):
		super(Table, self).__init__(parent)
		self.MODEL = None
		self.setAlternatingRowColors(True)
		self.setSelectionMode(1)
		self.setSelectionBehavior(1)
		self.setGridStyle(1)
	def setData(self, model):
		self.setModel(None)
		self.setEnabled(False)
		self.repaint()
		self.MODEL = model
		self.setModel(model)
		self.setEnabled(True)
		self.repaint()
	def selectionChanged(self, selected, deselected):
		print 'i changed!!!'
		self.repaint()
		
	def model(self):
		return self.MODEL

В этой таблице выставляется модель выделения так что бы можно было выделить только одну единственную строку. При переопределении метода selectionChanged() работает криво… когда меняешь выделение - предыдущая строка порой остается частично выделенной(а вернее почти всегда). Не пойму в чем проблема… Интересно бы узнать что происходит в оригинальном методе, как обрабатываются эти самые selected и deselected. Мне просто надо что бы таблица эмитила сигнал при смене строки(ячейки).



Отредактировано keizer08 (Авг. 9, 2012 15:45:28)

Офлайн

#2 Авг. 9, 2012 16:07:49

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

QtGui.QTableView.selectionChanged() криво работает при переопределении.

Вопрос не актуален, решил проблему другим способом.



Офлайн

#3 Авг. 9, 2012 16:08:01

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

QtGui.QTableView.selectionChanged() криво работает при переопределении.

В этом коде проблема, скорее всего, в том, что не вызывается метод базового класса:

	def selectionChanged(self, selected, deselected):
		print 'i changed!!!'
		super(Table, self).selectionChanged(selected, deselected)

Но правильнее использовать сигнал selectionChanged от QItemSelectionModel которую можно получить через QAbstractItemView::selectionModel

Ну и с моделью вы что-то странное делаете.

Офлайн

#4 Авг. 29, 2012 15:31:22

keizer08
От:
Зарегистрирован: 2011-09-13
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

QtGui.QTableView.selectionChanged() криво работает при переопределении.

reclosedev
В этом коде проблема, скорее всего, в том, что не вызывается метод базового класса:
	def selectionChanged(self, selected, deselected):
		print 'i changed!!!'
		super(Table, self).selectionChanged(selected, deselected)

Но правильнее использовать сигнал selectionChanged от QItemSelectionModel которую можно получить через QAbstractItemView::selectionModel

Ну и с моделью вы что-то странное делаете.

Спасибо уже разобрался))) я сейчас вообще много чего чего странного делаю - я новичок.



Офлайн

  • Начало
  • » GUI
  • » QtGui.QTableView.selectionChanged() криво работает при переопределении.[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version