Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何声明Qt信号,使Resharper不会';你不给我一个警告吗?_C++_Qt_Resharper C++ - Fatal编程技术网

C++ 如何声明Qt信号,使Resharper不会';你不给我一个警告吗?

C++ 如何声明Qt信号,使Resharper不会';你不给我一个警告吗?,c++,qt,resharper-c++,C++,Qt,Resharper C++,如果我有一个声明Qt信号的类: 类测试 { 信号: void TestSignal(); } 这在Qt中工作得很好。但是ReScReC++给了我警告: 这是正确的,但毫无意义,因为Qt不希望实现该函数。有没有办法实现这个信号,这样Resharper就不会抱怨了 我试过: 类测试 { 信号: void TestSignal()={}; } 但是获取生成错误: 错误:不是信号声明 Qt不希望实现该函数 这种说法是错误的。Qt是框架而不是语言。若你们不定义你们的函数,你们会从编译器那个里得到错误

如果我有一个声明Qt信号的类:

类测试
{
信号:
void TestSignal();
}
这在Qt中工作得很好。但是ReScReC++给了我警告:

这是正确的,但毫无意义,因为Qt不希望实现该函数。有没有办法实现这个
信号
,这样Resharper就不会抱怨了

我试过:

类测试
{
信号:
void TestSignal()={};
}
但是获取生成错误:

错误:不是信号声明

Qt不希望实现该函数

这种说法是错误的。Qt是框架而不是语言。若你们不定义你们的函数,你们会从编译器那个里得到错误

Qt有一个叫做MOC(元对象编译器)的工具。MOC是一个代码生成器。它解析头文件并生成一个附加的C++文件,该文件与程序的其余部分一起编译。生成的C++文件包含内省(St/S槽机制)所需的所有信息。 因此,要使代码正常工作,首先需要在类中包含
Q_OBJECT
def,并且类应该继承
QObject
或其子类之一(例如,
QWidget
),以便Qt可以使用它
QMetaObject
。如果您的编译器或更好的说法是您的开发者不知道如何生成moc文件,您需要自己生成,然后将
moc
文件包含在项目源代码树中,或直接将其包含在源文件末尾,如:

#include "yoursourcefilename.moc"

您可以在这里阅读mor关于Qt元对象系统的内容:

正如AcerExtensa所解释的,MOC工具生成Qt信号的实现。要使警告静音,可以将生成的源文件包含到解决方案中,以便ReSharper可以在头中看到信号的实现。您是对的,尽管此警告无效,但我已申请取消Qt信号的“函数未实现”检查。

您需要
Q\u对象
宏。而且,它是
信号
,而不是
信号
。声明应该是void
testSignal()你误解了这个问题-我的Qt代码没有问题,它工作正常。但是如何更改代码以阻止Resharper给我警告?我故意忽略MOC文件(请参阅),因为包含它们会给我带来更多无法修复的警告。谢谢你的改进,我增加了我的选票。
#include "yoursourcefilename.moc"