问题标签 [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.
qt - 将 Qt moc 文件添加到项目中
有没有办法强制重新编译其他项目moc
文件?我使用visual studio,我得到了一个qt项目,在那里我添加了其他带有接口和信号/插槽的项目类(比如说thing.cpp
,,,thing.h
ui_thing.h
(已包含generated files
文件夹),
moc_thing.cpp
在 generated files\debug
(因为主要项目处于调试模式),
并thing.ui
进入Form files
)
在我决定进行一些更改,添加一些插槽/信号之前,它工作正常。你可以猜到包含的moc
文件不会重新编译。我决定更改thing.h
.
我从主项目文件中复制了参数,所以在命令行部分有
"$(QTDIR)\bin\moc.exe" "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQWT3D_DLL -DQT_DLL -DQT_SVG_LIB -DQT_SCRIPT_LIB -DQT_MULTIMEDIA_LIB "-I.\parsers" "-I$(QWTDIR)\include" "-I.\ProductionHistory\GeneratedFiles" "-I.\ProductionHistory" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtSql" "-I$(QTDIR)\include\QtGui" "-I." "-I$(Boost)\." "-I.\well groups widget" "-I.\rules widget" "-I.\gui" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtScript" "-I$(QTDIR)\include\ActiveQt" "-I$(QTDIR)\include\QtMultimedia"
在输出数据部分".\databaseOpening\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"
在附加依赖项部分有
"$(QTDIR)\bin\moc.exe";
$(InputPath)
但它仍然没有重新编译。有没有办法解决这个问题?
c++ - Moc Qt 头文件自动使用 make
我正在尝试使用 make 使用 Q_OBJECT 宏来 moc 所有头文件。这是我现在所拥有的。
但是我在这个解决方案中有一个问题。只有第一个文件是 moc'ing。
谢谢。
visual-c++ - 使用 DLL 中的 QMetaObject 会导致内存访问错误
我在 DLL 中使用 QMetaObject(更具体地说是 staticMetaObject 属性)时遇到问题。我已经缩小到以下小例子:
测试库.h
测试库.cpp
主文件
如果上面的行被注释掉,则lib.load()
返回true
,否则false
。如果使用调试器运行,则会在相关行中报告地址 0x0 处的内存访问冲突。
这是Qt中的错误吗?QMetaObjects 不能在 DLL 中使用还是我做错了什么?
c++ - 命名空间的 Qt MOC 错误,如 FOO::BAR
我有一个像
MOC 编译器在第一行发现错误。当我输入时,此错误消失:
你知道我怎么能解决那个 MOC 问题吗?
c++ - Qt SLOT 宏用作函数参数
我正在浏览与 Qt 5.1.1 一起安装的计算器示例,并且有一个用于创建按钮小部件的私有函数(按钮继承 QToolButton):
该示例调用上述函数来创建几个不同的按钮,例如:
其中 void clear() 被声明为私有插槽。我了解代码试图做什么,但我想知道为什么将 SLOT(clear()) 作为 const char *member 工作。我似乎在网上找不到太多可以解释使用 SLOT 的东西。
c++ - 通过 QObject 子类实现多重继承的最接近解决方案
我有多个 QObject 子类,它们应该充当接口类并由其他一些类(继承)实现。例如 letclass A : virtual public QObject
和 class B : virtual public QObject
be 接口类。我需要一个QDialog
对象来实现它们的行为,例如:class X: public QDialog, A, B
.
不幸的是,我在设计时没有仔细阅读文档,现在我意识到了两个事实:
- 将插槽实现为纯虚拟成员函数是不可能的,因为 moc 生成的代码需要调用它们。
- QObject 派生类不支持多重继承。那不是钻石的事。这是因为 moc 生成的代码不能
static_cast
将虚拟QObject
对象A*
通过虚拟基础。(这就是编译器所说的!)
什么是尽可能少地影响代码的最佳替代设计?我可以想到宏黑客。也许基类中的宏(如Q_OBJECT
)将基类的所有成员、信号、插槽复制到派生类?
注意QObject
s 不能被多次继承真的很糟糕。不是吗?
c++ - 发射和发射()之间的区别
在 Qt 中,它们都是有效的,并且行为相同:
对比
有什么区别吗?
visual-studio-2010 - Qt MOC 多个文件与 MSBuild 并行
早上好!
我知道这里已经有这个问题:Qt Moc'ing multiple files in parallel under msbuild但我不会出现这个老问题。
我在 Visual Studio 2010 下工作,我必须加快应用程序的编译时间。我使用所有标志,如/MP
MSBuild-j
和 Make 等。优化的最后一步是并行化 MOC 步骤。它们非常缓慢,我用谷歌搜索了很多,但没有找到解决方案。
我知道jom
存在,但它使用 nmake,我必须使用 MSBuild。
如果有人已经听说过解决方案,那应该真的很酷!
祝你今天过得愉快!
c++ - Qt 中的多级继承
我正在尝试为我的 Qt 页面实现多级继承。
moc_MyPage2.cc 为空,链接时出现错误:
错误 LNK2001:未解析的外部符号“公共:虚拟结构 QMetaObject const * __thiscall dsw::MyPage2::metaObject(void)const” (?metaObject@MyPage2@dsw@@UBEPBUQMetaObject@@XZ)
有人可以指导我吗?
android - 揭开这个命令行构建序列的神秘面纱
到目前为止,我一直坚持以下程序: - 在项目上调用 qmake - 调用 make
但是查看 Qt Creator 为特定项目(QML 插件)发出的命令,我发现了另一个过程:
在发布完整代码之前总结一下,对于一个有 2 个头文件和 2 个 cpp 文件的项目,我收到 2 次 g++ 调用,然后是 moc 调用,另一个 g++,另一个 moc,最后还有 2 个 g++ 调用,总共 7 个调用, 5 到 g++ 和 2 到 moc。
也许有人可以向我解释为什么需要这么多电话以及每个电话具体做什么?当然,我确实有一些想法,我看到了对 moc 和两个用户类的两次调用,但我仍然不明白所有调用的原因以及它们特定排序的原因。
这是完整的代码(格式化以使其更具可读性):