2015-07-28 5 views
0

Я хочу создать список элементов с помощью QListWidget и настроить его, чтобы каждый раз, когда я нажимаю (выбирает) элемент, выполняется другой метод. То, как я думал о решении этого, - это подключение списка к методу, который будет проверять индекс, и в зависимости от индекса элемента он будет генерировать сигнал, подключенный к другому методу. Дело в том, что я не знаю, как генерировать этот сигнал, если у меня нет кнопки или чего-то еще. Этот метод просто проверяет индекс элемента.Создайте сигнал для каждого элемента в QListWidget

Любые предложения будут высоко оценены!

+0

Зачем вам нужен сигнал? Почему бы просто не вызвать метод напрямую? – ekhumoro

+0

У вас уже есть куча сигналов, когда вы выбираете, щелкните или дважды щелкните по элементу: 'itemSelectionChanged',' itemActivated', 'itemClicked' ... См. [Qt Doc] (http: //doc.qt. io/qt-4.8/qlistwidget.html) – Mel

+0

Можете ли вы уточнить? @ ekhumoro – theCHemist90

ответ

1

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

Но если вы действительно хотите, чтобы создать «щелкнули» сигнал для каждого элемента и подключить его к соответствующему слоту (ы), вы могли бы сделать это следующим образом:

  1. подклассы QListWidgetItem и добавить clicked сигнал к нему. How to add custom signals

  2. Заполняя QListWidget, соедините каждый элемент с его слотами в зависимости от его индекса.

  3. Подключите itemClicked сигнал QListWidget в слот, который излучает сигнал, по которым щелкнули элемента, как это:

    def itemClickedSlot(item): 
        item.clicked.emit() 
    
+0

Спасибо. Я постараюсь сделать это. ekhumoro говорит, что я могу назвать метод напрямую. Вы знаете, о чем он говорит? – theCHemist90

+0

Насколько я понимаю его комментарий, я бы сказал, что это первая альтернатива, которую я вам объяснил: вместо того, чтобы иметь сигнал для каждого элемента, просто вызываю метод напрямую в зависимости от индекса щелчка. –

+0

Спасибо, х квадрат. Я попытался заставить ваш ответ работать, но я не знал, как добавить сигнал щелчка к каждому элементу списка (он говорит, что QListWidgetItem не обладает этим атрибутом). После многих попыток то, что я закончил, это использовать currentRowChanged-сигнал класса QListWidget и подключить его к методу, который вызывает определенную функцию на основе индекса. Это очень похоже на то, о чем вы говорили. Так что, конечно, ты поставил меня на правильный путь. Еще раз спасибо! – theCHemist90

Смежные вопросы