问题标签 [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.
c++ - Q_OBJECT 导致“未定义的 v_table 引用”问题
我已经成功地创建了一个在 Eclipse 中C++
使用的 GUI Qt
,但是在分配我自己的按钮单击事件时,我被告知宏Q_OBJECT
需要包含在我的QWidget
类的头文件中。
运行后,窗口不再显示,并且我的QWidget
类的构造函数和析构函数都遇到错误。
头文件如下:
构造函数和析构函数如下:
我的所有头文件都列在HEADERS
我的 .pro 文件列表中,并且QMake
在将Q_OBJECT
宏添加到头文件后我已经运行了。
初始化代码:
这是显示的错误消息:
c++ - MOC 一个 lambda 连接
我想像这样创建一个连接:
但这不起作用,因为如果函数不通过 MOC,就无法调用 sender()。因此,使这项工作(看似)的唯一方法是使用旧的基于信号/槽字符串的语法。
但是,像this Qt blog之类的东西看起来Qt5函数指针语法应该比以前的字符串语法更受欢迎,所以我很好奇:有什么方法可以MOC lamda函数,还是有一整类案例哪里不能使用新语法?
c++ - Qt Audiorecorder 示例 - 按钮连接
最后,我研究了 QtCreator 的 Audiorecorder 示例(http://qt-project.org/doc/qt-5/qtmultimedia-audiorecorder-example.html)。有一个录制按钮,点击后开始录制。但我找不到像这样的代码
或类似的东西。我不明白为什么录音机知道我点击了按钮。所以我也不能让这个按钮适应我的需要。有没有其他方法可以将按钮连接到不可见的功能,或者我只是忽略了它?我听说过一些关于元对象 moc 文件的事情,这有什么关系吗?如果是,我该如何删除或更改它并实现“正常”连接?
qt - 如何使用 C-Make 将“未构建”文件添加到项目中
我已经搜索了几个小时,但找不到解决方案,所以问。
我有一个项目解决方案,其中包括大约 10 个项目。但我面临一个依赖问题。我的一个项目生成 moc 文件(由 Cmake 的“QT4_WRAP_CPP”宏生成的 QT moc 文件),我想在另一个项目中使用这个 moc 文件。现在,在运行 cmake 脚本并获得解决方案之后,我构建了所有项目,并且需要先前项目生成的那些 moc 文件的项目抱怨链接错误(正确的,因为我没有在它的 c-make 中指向任何文件ADD_EXECUTABLE 部分中的脚本)。
我的问题是:有没有办法在 Cmake 的项目中添加一个“尚未构建但将”文件以在编写 cmake 脚本的同时指向它?
这是项目的cmake脚本的相关部分:
//假设 X 项目(也在此解决方案中并在 Y 项目之前构建)生成名为“moc_X.cxx”的 moc 文件
希望它足够清楚。提前致谢。
c++ - Qt metaObject->indexOfMethod 总是返回 -1
我在Foo
课堂上声明了一个函数:
Q_INVOKABLE void setImageUrl(const QString &imageUrl);
但是我无法获得该方法的功能索引:
我错过了什么?
c++ - 带有 QNetworkAccessManager 派生类的构造函数中未定义的引用
我正在尝试使用以下使用 Qt 库的代码读取 html 页面
编译时出现以下错误。我不确定我没有以正确的方式做些什么。
我继承自 QNetworkAccessManager 以实现“replyFinished”插槽。信号“完成”已经是“QNetworkAccessManager”的一部分。
c++ - Qt Vs addin - 不为 moc_*.cpp 文件生成 .obj 文件
我正在使用带有 qt 插件的 Visual Studio,当我构建我的项目时,它会根据我的项目中的构建规则生成 moc_*.cpp 文件:
生成 moc_myfilewithqobject.cpp 后,它继续构建项目并在链接阶段给出 LINK 2001 错误:
因为它找不到文件 moc_myfilewithobject.obj。moc_myfilewithobject.obj 没有生成,因为 moc_myfilewithobject.cpp 生成后没有编译。但是,当我将 moc_myfilewithobject.cpp 包含到我的项目中时,它会被编译并解决问题。但这是手工完成的,有时会导致一些问题。有没有办法在不包括 moc_ .cpp 文件手动项目的情况下解决这个问题?就像在生成后编译 moc_ .cpp 还是自动包含它?
注意: 我添加了一个试用 .h 文件作为 qt 类,以查看在项目文件中添加新的 qt 标头时会发生什么。它添加了不属于我的有问题的文件的行:
所以我认为这是一个真正的配置,但是我之前作为qt类创建的文件没有这样的配置。但是,当我删除 GeneratedFiles 中的 Debug 文件夹时,它会给出相同的错误,因为当我删除 Debug 文件夹时,moc_ .cpp 文件也会从项目文件中删除。那么问题来了:生成的 moc_ .cpp 文件一定不能删除,是真的吗?
qt - 如何指示 cmake/automoc 查找外部标头
我有一个 Qt 小部件 C++ 类,它加载在 Qt Creator 中创建的 ui 文件。类的头文件和源文件位于两个单独的目录中。我无法指示 cmake/automoc 找到该类的标题。cmake 认识到它需要 moc C++ 文件,但找不到类似的头文件。
我可以做些什么来帮助 cmake 找到文件吗?
如果 cpp 和头文件都在同一目录中,则一切正常。只有当标题在其他地方时才会出现这种情况。
我的目录结构是
在 src/include/Foo/Bar.h 我有:
在 src/Foo/Bar.cpp 文件中:
我在 src/lib/Foo 中的 CMakeLists.txt 设置如下:
当我运行 cmake 时,我收到以下错误:
AUTOGEN:错误:/automoc/src/lib/Foo/Bar.cpp 该文件包含 moc 文件“moc_Bar.cpp”,但找不到标题“Bar{.h,.hh,.h++,.hm,.hpp ,.hxx,.in,.txx}" 在 /automoc/src/lib/Foo/
c++ - Qt/Qml 和方法重载
刚从 Qml 中调用重载的 C++ 方法并试图了解其背后的原因时,遇到了 Qt 框架的奇怪行为。假设我有一个QList<QVariant>
具有以下方法的 -like 类:
Qml:
Qt 以某种方式决定调用参数设置为空的void insert(int index, const QVariantList &items)
重载,而不是使用Wrapped in的重载。items
null QVariant
QVariantList
void insert(int index, const QVariant &item)
QString
QVariant
现在,如果我按如下方式更改声明的顺序,它会按预期工作:
我在 Qt 框架的文档中找不到任何关于声明顺序以及它如何影响调用期间解析方法的方式的信息。
有人可以解释一下吗?谢谢你。