C++ 连接插槽和信号时发生Qt转换错误
我有一个从QListWidget继承的类,名为C++ 连接插槽和信号时发生Qt转换错误,c++,qt,C++,Qt,我有一个从QListWidget继承的类,名为Menu,我正在尝试将这个类的信号连接到一个小部件的插槽 class Menu : QListWidget { Q_OBJECT public: Menu(Config &config, QWidget *parent = 0); ~Menu(); public slots: void itemChanged(QListWidgetItem *item); signals: void clickedIte
Menu
,我正在尝试将这个类的信号连接到一个小部件的插槽
class Menu : QListWidget
{
Q_OBJECT
public:
Menu(Config &config, QWidget *parent = 0);
~Menu();
public slots:
void itemChanged(QListWidgetItem *item);
signals:
void clickedItemChanged(std::string item);
private:
std::vector<QListWidgetItem*> items;
};
// in another widget connect the signals and slots
connect(menu, SIGNAL(clickedItemChanged(std::string)),
this, SLOT(menuItemChanged(std::string)));
类菜单:QListWidget
{
Q_对象
公众:
菜单(配置&配置,QWidget*parent=0);
~Menu();
公众时段:
作废项目变更(QListWidgetItem*项目);
信号:
作废clickedItemChanged(标准::字符串项);
私人:
向量项;
};
//在另一个小部件中,连接信号和插槽
连接(菜单、信号(单击编辑更改(标准::字符串)),
这个插槽(menuItemChanged(std::string));
但编译失败,表示无法将“Menu”强制转换为其私有基类“const QObject”。插槽的签名与信号的签名匹配,插槽所属的小部件类包含对
菜单的引用。问题的原因是什么?我应该如何解决 您是否将#包含菜单中定义的标题纳入您调用connect的cpp文件中?std::string
与Qt容器不同,因此复制(通常)非常昂贵,考虑更改您的信号和时隙签名以使用const引用,您为什么从<代码> QListWIDGET < /代码>中私下继承?这使得基类无法访问。使用public
继承。@G.M.没有注意到这一点。非常感谢@伊尔贝尔杜斯明白了!