Кликабельные элементы или дочерние виджеты внутри настраиваемого делегата

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

Я уже пытался проверить официальную документацию (например, Программирование модели / представления ), а также довольно много гуглил, но не смог понять, как это сделать.

У меня есть две идеи, каждая со своими проблемами:

  • Я мог бы нарисовать их с помощью дочерних виджетов, таких как плоский QPushButton. Как мне затем разместить и отобразить эти виджеты?
  • Я мог бы также нарисовать их как текстовые строки. Как мне сделать их кликабельными? Или я могу фиксировать события щелчка в родительском QListView и каким-то образом определять их координаты? Затем я мог сопоставить координаты с этими интерактивными элементами и действовать соответствующим образом.

Мой первоначальный подход заключался в использовании QListWidget с .setItemWidget (), где у меня был правильный виджет с макетом и дочерними виджетами. К сожалению, это было слишком медленно, когда мой список вырос до сотен или тысяч пунктов. Вот почему я перешел на QListView с делегатом.

8
задан ekhumoro 11 January 2017 в 21:04
поделиться