升级到Visual Studio 2015后,我遇到了编译一些旧代码的问题。 包含信号的类定义如下:
namespace aaa {
namespace bbb {
class MyCombo : public QComboBox
{
Q_OBJECT
public:
MyCombo(QWidget* parent=0);
Q_SIGNALS:
void mySignal(ccc::SomeType::SomeTypeValues);
};
} // bbb
} // aaa
SomeType在不同的头文件中定义,如下所示:
namespace aaa {
namespace ccc {
class SomeType
{
public:
enum SomeTypeValues { SomeValue=0, SomeOtherValue };
};
} // ccc
} // aaa
当我编译代码时,我得到:
error C2327: 'QWidget::ccc': is not a type name, static, or enumerator
我尝试将信号签名更改为:
void mySignal(aaa::ccc::SomeType::SomeTypeValues);
这会编译,但是当发出信号时,连接到此信号的两个插槽都不会被触发。