为什么要在命令行应用程序中包含QtWidgets?

TSG*_*TSG 0 c++ console qt widget

我创建了一个简单的Qt控制台应用程序(基于Qt提供的示例代码).虽然这是一个控制台应用程序,但ldd显示了许多链接的X11内容.

我在我的.pro文件中注意到了QT += widgets.对于控制台应用来说这似乎很奇怪,所以我删除了小部件但没有编译节目:

main.cpp:13:24: error: QApplication: No such file or directory
main.cpp: In function ‘int main(int, char**)’:
main.cpp:26: error: ‘QApplication’ was not declared in this scope
main.cpp:26: error: expected ‘;’ before ‘app’
main.cpp:47: error: ‘app’ was not declared in this scope
main.cpp: At global scope:
main.cpp:21: warning: unused parameter ‘argc’
main.cpp:21: warning: unused parameter ‘argv’
make: *** [main.o] Error 1
Run Code Online (Sandbox Code Playgroud)

有人能告诉我发生了什么事吗?我是否需要控制台应用程序的小部件?如果没有,为什么我不能成功删除它?

Mat*_*Mat 5

QApplication 是Qt 5中QtWidgets模块的一部分,所以如果你想使用它,那么你需要包含它.

如果您根本不需要任何GUI内容,请QCoreApplication改用.它位于QtCore模块中,不需要包含精美的图形部件.