问题标签 [moc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7183 浏览

c++ - 从QObject继承后的Qt“信号未定义引用错误”

我最近需要向一个类添加一个信号,所以我将类更改为继承自 QObject 并将 Q_OBJECT 宏添加到类定义中。由于这样做,我在下面的类行中收到“'vtable for CLICommand' 的信号未定义参考错误”错误:

和下一行的第二个错误“signal undefined reference error for 'vtable for CLICommand'”(初始化成员变量):

就在这里,我发出信号。发射行生成对 `CLICommand::signal_shutdown_request()' 的错误未定义引用

我已经阅读了很多关于这个主题的帖子,但似乎没有一个适用。我什至尝试过 clean/rebuildall。我没有使用 boost 或其他库......只是 QT 5

有人可以告诉我我做错了什么吗?


解决方案:在 QT Creator 中,右键单击项目,选择 RUN QMAKE,然后全部重建。关于运行 REBUILD ALL 的其他帖子不正确......它自己不会运行 qmake。

0 投票
0 回答
1261 浏览

c++ - Qt Creator 设置 moc 参数

我正在尝试将我的项目从 VS2005 构建系统移动到 Qt Creator。

我们已经设置了 Visual Studio 以将 moc 用于某些标头并输出具有相同文件名的 .moc 文件。

例如:
MyClass.h

我的班级.moc

当 QtCreator 运行 qmake 并运行 moc 时,它会生成一个 cpp 文件,文件名前面带有 moc_

例如:MyClass.h

moc_MyClass.cpp

我找到了更改moc 输出文件位置的选项,但现在如何更改实际输出文件名。在我们的视觉工作室文件中,我们基本上有

在 Qt Creator 中是否有等效的方法来执行此操作?我猜这是我放在 .pro 文件中的东西。

编辑:

我在我的问题上取得了一些进展。

我在这里这里找到了一些关于如何拥有自定义编译器和目标的文档。

我已经设置了我的“新 moc”工具以在与标题相同的目录中输出 moc 文件并将它们命名为 .moc 文件。

它在正确的位置构建 moc 文件,但是,现在我的项目出现链接器错误。

我猜我的 moc 构建工具缺少一些东西。

0 投票
1 回答
21 浏览

bash - 为另一个脚本配置脚本

我正在创建一个简单的 bash 脚本,它会在某个时间打开一个媒体播放器,并随着时间的推移增加它的音量。因为我想稍后与几个人分享这个脚本,所以我想知道是否可以创建另一个脚本,让其他用户根据自己的喜好更改值。

我知道只需通过 texteditor 打开脚本就可以解决问题,但是由于我是 bashscripting 的新手,所以我很想知道是否有办法在不使用 texteditor 的情况下做到这一点

0 投票
3 回答
15633 浏览

c++ - Qt 5 cmake fails with undefined reference to vtable on hello world with inc & src as subdirs

Update 2

After messing around a bit (and some editing of the generated Makefiles), it looks like what is happening is that moc is not properly processing MainWindow.h (included by main.cpp and MainWindow.cpp unless it is in the same folder as the source files which included it.

Moc runs on MainWindow.cpp, doesn't process the include and thus doesn't see the Q_OBJECT macro so proceeds to produce an empty output file. I'm not sure whether moc usually processes includes or if it just scans the directory, but either way, headers that need mocing but are in other directories are not being processed!

Update

The problem appears to be related to the output produced by moc. In the first case (the one that compiles), hello-world_automoc.cpp and moc_MainWindow.cpp are generated. hello-world_automoc.cpp looks like

In the second case, a hello-world_automoc.cpp is produced that looks like

and there is no moc_MainWindow.cpp at all. If I manually call moc in from cmake instead of using automoc in the broken case, I do get moc_MainWindow.cpp but it is empty.

Original Status

Firstly, no, I haven't forgotten to set(CMAKE_AUTOMOC ON). Also note that MainWindow's destructor is declared and implemented.

When my directory structure looks like:

compiling works just fine.

However, when it looks like:

I get linking errors:

I'd really like to have my sources and headers in proper subdirectories, but I'm not quite sure how to fix this.

This is actually the simplest identifiable case of an error from a much larger project, so I'm really not all that keen to flatten the project directories just because I'm adding a Qt GUI to it.

0 投票
1 回答
17441 浏览

qt - CMake 和 Qt5 AUTOMOC 错误

我有一个使用 Qt5 的项目,并且我有一个CMakeLists.txt用于创建 Visual Studio 解决方案的文件。

这是我的摘录CMakeLists.txt

当我尝试编译代码时,它返回以下错误:

moc 文件已自动生成,并且标头不在 build 文件夹中,而是在 src 目录中的文件夹中。

如何解决此错误?

0 投票
0 回答
1072 浏览

c++ - 来自 moc 文件的 Qt 编译错误,由更改小部件名称引起的问题

所以我在 UI 表单中添加了一个滑块,然后单击 go to slot -> sliderReleased() .. 没问题。但是,在完成之后,我将滑块名称从默认更改为horizontalSliderslider1并删除了 Qt 所做的旧空实现。现在,当我尝试构建我的项目时,我收到了这个错误:

那又怎样,它认为那个槽应该还在那里?我该如何解决?

0 投票
2 回答
280 浏览

c++ - Qt 4.8:使用槽和信号对 vtable 的未定义引用

我在 Qt v4.8.5 中的插槽和信号代码中遇到了一个奇怪的错误。每当我包含我QObject的插槽时:

我收到一些奇怪的错误:

我认为这很奇怪,因为错误似乎与.pro..pro

为什么我的包含路径中的标头会出现这样的未定义引用?

0 投票
2 回答
1234 浏览

c++ - C++ 使用 QML 的信号槽

我有一个无法正常工作的小班,我不知道它有什么问题。编译器给出消息:

这是代码中的快照:

在 main.qml 中:

更新:感谢关于构造函数的建议。现在错误是:

这里错过了什么?欢迎所有建议。

0 投票
1 回答
1701 浏览

c++ - 在 Linux 的命令行上编译 QObject 派生类

我是 Qt 的新手。我正在尝试编译如下所示的小代码片段:

我正在尝试使用以下命令通过命令行运行它:

但是我收到以下错误:

我想我需要包含库QObject,但我不太确定。有任何想法吗?

0 投票
0 回答
547 浏览

c++ - 错误 PRJ0019:工具从“Uic'ing ......”返回错误代码

我正在尝试运行一个项目,但我做不到。我收到错误 PRJ0019。你能帮我解决这个错误吗?

这是我的 buildLog ;

@echo 关闭

d:\qt_4.8.2\bin\uic.exe select_model.ui -o .\select_model.h

d:\qt_4.8.2\bin\uic.exe select_model.ui -i select_model.h -o .\select_model.cpp

d:\qt_4.8.2\bin\moc.exe .\select_model.h -o .\moc_select_model.cpp

如果错误级别 1 转到 VCReportError

转到 VCEnd

:VCReportError

echo 项目:错误 PRJ0019:工具从“Uic'ing select_model.ui ...”返回错误代码

1号出口

:VCEnd ] 创建命令行 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test\Debug\BAT00000190767304.bat" 创建临时文件 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test \Debug\BAT00000290767304.bat" 包含内容 [ @echo off

d:\qt_4.8.2\bin\uic.exe previewform.ui -o .\previewform.h

d:\qt_4.8.2\bin\uic.exe previewform.ui -i previewform.h -o .\previewform.cpp

d:\qt_4.8.2\bin\moc.exe .\previewform.h -o .\moc_previewform.cpp

如果错误级别 1 转到 VCReportError

转到 VCEnd

:VCReportError

echo 项目:错误 PRJ0019:工具从“Uic'ing previewform.ui ...”返回错误代码

1号出口

:VCEnd ] 创建命令行 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test\Debug\BAT00000290767304.bat" 创建临时文件 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test \Debug\BAT00000390767304.bat" 包含内容 [ @echo off

d:\qt_4.8.2\bin\uic.exe messageform.ui -o .\messageform.h

d:\qt_4.8.2\bin\uic.exe messageform.ui -i messageform.h -o .\messageform.cpp

d:\qt_4.8.2\bin\moc.exe .\messageform.h -o .\moc_messageform.cpp

如果错误级别 1 转到 VCReportError

转到 VCEnd

:VCReportError

echo 项目:错误 PRJ0019:工具从“Uic'ing messageform.ui ...”返回错误代码

1号出口

:VCEnd ] 创建命令行 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test\Debug\BAT00000390767304.bat" 创建临时文件 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test \Debug\BAT00000490767304.bat" 包含内容 [ @echo off

d:\qt_4.8.2\bin\uic.exe mainform.ui -o .\mainform.h

d:\qt_4.8.2\bin\uic.exe mainform.ui -i mainform.h -o .\mainform.cpp

d:\qt_4.8.2\bin\moc.exe .\mainform.h -o .\moc_mainform.cpp

如果错误级别 1 转到 VCReportError

转到 VCEnd

:VCReportError

echo 项目:错误 PRJ0019:工具从“Uic'ing mainform.ui ...”返回错误代码

1号出口

:VCEnd ] 创建命令行 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test\Debug\BAT00000490767304.bat" 创建临时文件 "c:\Users\musa\Documents\Hobby\LSSDK_NO_WSQ\EXAMPLE\lsclient_test \Debug\BAT00000590767304.bat" 包含内容 [ @echo off

d:\qt_4.8.2\bin\moc.exe imgview.h -o moc_imgview.cpp

如果错误级别 1 转到 VCReportError

转到 VCEnd

:VCReportError

echo 项目:错误 PRJ0019:工具从“Moc'ing imgview.h...”返回错误代码

1号出口

:VC结束