【发布时间】:2011-08-12 03:24:14
【问题描述】:
我正在尝试将枚举作为值传递给程序中的插槽,但我遇到了一些问题。在我的头文件中,我创建了枚举:
Q_ENUMS(button_type);
enum button_type {button_back, button_up, button_down, button_ok};
Q_DECLARE_METATYPE(button_type);
在我的 .cpp 文件中,我试图将它传递给一个插槽:
QObject::connect(buttons->ui.pushButton_back, SIGNAL(clicked()), this, SLOT(input_handler(button_back)));
但是当我编译我得到的代码时:
Object::connect: No such slot main_application::input_handler(button_back) in main_application.cpp:44
Object::connect: (sender name: 'pushButton_back')
Object::connect: (receiver name: 'main_applicationClass')
如果我不将参数传递给 input_handler,它可以编译并正常工作。
我还读到我应该调用 qRegisterMetaType,但我似乎无法获得正确的语法。这是我尝试过的:
qRegisterMetaType<button_type>("button_type");
但我收到此错误:
main_application.h:15:1: error: specializing member ‘::qRegisterMetaType<button_type>’ requires ‘template<>’ syntax
谁能帮我解释一下?
谢谢!
马龙
【问题讨论】:
-
没有关于这个“专业成员...”错误...?