继承自QListWidget及其SLOT

时间:2015-11-15 15:22:03

标签: c++ qt signals-slots qlistwidget

这是继承自onCreateOptionsMenu

的类
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         inflater.inflate(R.menu.my_menu, menu);
         super.onCreateOptionsMenu(menu, inflater);
         //Do what you want with menu - listeners etc.
     }

对应的.cpp文件(部分内容):

QListWidget

我希望在点击项目时调用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); }; ,但没有任何反应。可能是什么问题?

主要部分:

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);
}

1 个答案:

答案 0 :(得分:3)

您需要为要使用信号/插槽的类添加Q_OBJECT宏。 IIRC,“旧”连接还要求在<accessibility> slots:部分声明插槽。

顺便说一下,人们已经使用"new" signal/slot connection syntax大约三年了。