Вот класс, который наследует от QListWidget
:Унаследовав от QListWidget и его SLOT
typedef void(*fnc) (QListWidgetItem* item);
class CustomListWidget : public QListWidget
{
public:
CustomListWidget();
void AddItemList(std::vector<std::string>* list);
void ConnectToOnClickSlot(fnc func);
private:
fnc onClick;
void InvokeOnclickMethod(QListWidgetItem* item);
};
Соответствующий .cpp файл (его часть):
CustomListWidget::CustomListWidget()
{
QObject::connect(this, SIGNAL(itemClicked(QListWidgetItem*)),
this, SLOT(InvokeOnclickMethod(QListWidgetItem*)));
}
void CustomListWidget::ConnectToOnClickSlot(fnc func)
{
onClick = func;
}
void CustomListWidget::InvokeOnclickMethod(QListWidgetItem* item)
{
onClick(item);
}
Я ожидал, что InvokeOnclickMethod
быть вызывается при нажатии элементов, но ничего не происходит. Что может быть проблемой?
Основная часть:
auto listView = new CustomListWidget();
listView->ConnectToOnClickSlot(ItemClicked);
void ItemClicked(QListWidgetItem* item)
{
//Do something...
}
Да, проблема решена. Кроме того, я пытался подключить ** простую функцию ** на первом месте. Таким образом, вы ответили больше, чем мой вопрос. – ozgur
Добро пожаловать. – LogicStuff