PyQt - как читать документацию - PullRequest
2 голосов
/ 22 января 2012

Мне нужен совет о том, как читать документацию PyQt.Потому что сам по себе я вряд ли что-нибудь придумаю.Я новичок в программировании, извините, если мой вопрос сбивает с толку.Я постараюсь объяснить, как могу :)

Это пример того, где я застрял.Я экспериментировал с QListView.В основном просто пытаюсь распечатать данные того, что я выбрал в представлении.Я застрял, пока Джастин, очень терпеливый преподаватель Python, не показал мне этот фрагмент кода.

listView.clicked.connect(B)
def B(index):
    record = sqlmodel.record(index.row())

Он соединяет сигнал clicked из QListView с функцией B. Я был очень удивлен, что сразу же отправляется событие clickedindex до Б само по себе.Я пытался просмотреть документацию QListView, но не могу найти ничего, что объясняет это.

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qlistview.html

В этом случае, где в документах я должен посмотреть, чтобы узнать об этом событии, по которому щелкают, и индекс, который он отправляет?

Был бы очень признателенлюбой совет.:)

Ответы [ 2 ]

4 голосов
/ 22 января 2012

К сожалению PyQt документация не полная.Лучший источник знаний - Документация Qt .

В вашем случае QTableView наследует QAbstractItemView, и в документах QTableView нет сигнала clicked, его можно найти в Список всех членов,включая унаследованные члены страницы.И вы можете видеть, что этот сигнал исходит от QAbstractItemView и определяется как:

void QAbstractItemView :: clicked (const QModelIndex & index)

Здесь вы можете увидеть тип аргументов функции (кликабельный).

Итак, переданная вам функция index будет экземпляром QModelIndex и имеет метод row.

Если выпутают с синтаксисом C ++, другой вариант - использовать PySide документацию, которая более Python friendly .

QAbstractItemView.clicked в документах PySide

2 голосов
/ 22 января 2012

Следующий код соединяет нажатый сигнал QTableView с вашей функцией.QTableView испускает нажатие каждый раз, когда кто-то щелкает элемент, что означает, что ваша функция будет вызываться автоматически, поскольку она подключена к этому сигналу.

listView.clicked.connect(viewItemClicked)

Или я что-то упустил в вашем вопросе?Читайте о сигнальных слотах в Qt, если вышеприведенное неясно.(PyQt позволяет любой функции (т. Е. Вызываемой в Python) подключаться к сигналу, а не только к слоту (как в C ++).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...