dartNNN, спасибо за подсказку, сработало.
нашел пост с подобным вопросом… утверждается что данные “кликнутого” элемента можна достать с помощь использования класса QItemSelectionModel
пробовал…
правда даошло не спервого раза :D
при чем синал, судя по выдаваемым результатам, от QItemSelectionModel срабатывает до синала “клик” от QListView
приведу код для тех кто будет искать ответы “после меня”:
# -*- coding: utf-8 -*-
from select import select
import sys
import pyodbc
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def main():
app = QApplication(sys.argv)
w = WindowSlctnList()
w.show()
sys.exit(app.exec_())
class WindowSlctnList(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
# создается списочек имен, типа строк
listName = getListNameTable()
#экземпляр класса абстрактной модели, типа список
self.lm = ModelSlctnList(listName, self)
#экземпляр класса представлений для просмотра списка
self.lv = QListView()
self.lv.setModel(self.lm)
#задействуются синалы от виджета
#клик на мыши - clicked
self.lv.clicked.connect(self.selectName)
#для определения выбора строки курсором используется сласс ВЫДЕЛЕННЫХ ЭЛЕМЕНТОВ
#экземпляр класса QItemSelectionModel - класс выделенных/маркированных элементов для получения инфы об этих элементах
self.lms = QItemSelectionModel(self.lm)
#указываем представлению имя экземпляра класса ВЫДЕЛЕННЫХ ЭЛЕМЕНТОВ
self.lv.setSelectionModel(self.lms)
#описываем сигнал, указывающий об изменениях в выделенных/маркированных элементах
self.lms.selectionChanged.connect(self.chSelection)
#определяется виджет для представления модели
layout = QVBoxLayout()
layout.addWidget(self.lv)
self.setLayout(layout)
def selectName(self):
strOut = u'нажалось в selectName'
select = self.lms.currentIndex()
rowSel = select.row()
print strOut, rowSel
return
def chSelection(self):
strOut = u"нажалось в chSelection"
select = self.lms.currentIndex()
rowSel = select.row()
print strOut, rowSel
return
class ModelSlctnList(QAbstractListModel):
def __init__(self, datain, parent=None, *args):
QAbstractListModel.__init__(self, parent, *args)
self.listdata = datain
def rowCount(self, parent=QModelIndex()):
return len(self.listdata)
def data(self, index, role):
if index.isValid() and role == Qt.DisplayRole:
return QVariant(self.listdata[index.row()])
else:
return QVariant()
def getListNameTable():
# #коннектимся с базой
# db = pyodbc.connect('DSN=db_vek')
# #обзаводимся указателем на объекты базы
# cursor = db.cursor()
# #пройдемся по таблицам базы
# tablesName = [table.table_name.decode('cp1251') for table in cursor.tables() if table.table_name[:4] != "MSys" and table.table_name[:4] != "~TMP"]
# db.close()
# return tablesName
# #пример с готовой таблой
return ['table_name_0','table_name_1','table_name_2','table_name_3','table_name_4','table_name_5','table_name_6','table_name_7','table_name_8','table_name_9']
if __name__ == "__main__":
main()