问题标签 [qobject]

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 回答
542 浏览

c++ - objectCast 横向投射

我正在尝试用 QT 的 objectCast 替换我的代码中的所有 dynamicCast。但我遇到了一些障碍。这是我的对象的层次结构:

使用 objectCast 我可以将 Derived 转换为 ISize 或 IAbility。但是,在我的代码的一个点中,我想执行以下转换:Derived->ISize->IAbility。最后一次演员是我得到错误的地方。由于 IAbility 与 ISize 没有任何关系,这可能会导致问题。我可以在这一点上做一个动态演员,但我宁愿不做。

0 投票
1 回答
215 浏览

c++ - QMetaObject 的 QAbstractItemModel,我必须自己写吗?

建立在 Qt 反射系统之上的一套数据模型似乎是一种自然的协同作用,但我还没有在 Qt 库本身或第三方中找到这样的野兽。有谁知道这样的事情是否存在?

我正在寻找用于编辑和显示 QObjects QMetaObject 属性集合的数据模型。我可以理解为什么这不包含在 Qt 库中(因为不可能以干净的方式公开所有 QMetaObject)但我希望我不必编写一堆数据模型和代理模型来显示 QObjects 的层次结构和属性。

0 投票
7 回答
2138 浏览

c++ - 向继承自 QGraphicsScene 的类添加信号

我想将信号添加到继承自QGraphicsScene.

当我这样做时,Qt Creator 会警告我我忘记了Q_OBJECT宏。但是我在某处读到,因为QGraphicsScene不继承自QObject,所以我不应该将它放在我的类定义中。但是信号需要这个宏。

如何将信号添加到不继承自的类QObject


boardgui.h

0 投票
1 回答
10052 浏览

c++ - 是否可以将模板派生的 C++ 类与 Qt 的 Q_OBJECT 混合使用?

在我的应用程序中,我有以下类层次结构:

WordDictionary 类解析需要很长时间的字典。我在一个单独的线程中运行解析函数,我希望它能够不时向 GUI 线程发出信号,以根据当前正在解析的行号提供进度更新。这就是为什么我希望它是一个 Q_OBJECT。我试图将基类 Dictionary 设为 Q_OBJECT,但收到一条消息,指出不支持 Q_OBJECT 模板。当我删除宏,只留下 WordDictionary 作为 Q_OBJECT 时,我收到一堆一般形式的错误消息:

.\GeneratedFiles\Release\moc_dictionary.cpp(44) : error C2039: 'staticMetaObject' : is not a member of 'Dictionary'
with
[
T=Word
]

除了对其中的模板函数进行硬编码,产生大量样板代码之外,我还能做些什么来使我的模板派生 WordDictionary 类成为 Q_OBJECT?

编辑:将模板声明更改为:

使代码编译。不过,我不确定我是否没有做一些愚蠢的事情,以及这是否能正常工作。

0 投票
3 回答
3192 浏览

qt - Qt:将指针传递给 QMimeData 中的 QObject

是否可以在拖放操作期间使用 QMimeData 将指针传递给 QObject?QMimeData 只有这个函数用于存储数据:

但我找不到将指针安全编码为 QByteArray 的方法。

为了阐明我的目标:我需要在拖放操作期间将指向 QObject 的指针从模型传递到目标小部件。

编辑:据我所知,Mime 数据就是将应用程序独立数据从一个地方传递到另一个地方:url、颜色、html 代码。在我的情况下,我需要在应用程序中传递一个指向资源对象的指针。你通常如何处理这种拖放?

谢谢安东

0 投票
2 回答
950 浏览

qt - 对 QObject 子项进行排序

我注意到 QObject::children() 方法返回对 QObjectList 的 const 引用,其中包含 qobject 的子项。抛弃常量并使用 qSort 对列表进行排序是否安全?

谢谢安东

0 投票
3 回答
13809 浏览

c++ - 使用带有 QObject 的类(带有 Qt Creator 的 QT 4.7)编译器错误“collect2:Id 返回 1 退出状态”

我在当前项目中遇到以下情况:编译器使用以下代码返回“collect2:Id 返回 1 退出状态”:

编译器说以下内容:

... mingw32-make:进入目录C:/Entwicklung SVN/debug test/dataSenderReceiverExample' C:/Qt/2010.04/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directoryC:/Entwicklung SVN/debug test/dataSenderReceiverExample' g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"......\Qt\2010.04\qt\包括\QtCore" -I"......\Qt\2010.04\qt\include" -I"..\dataSenderReceiver" -I"......\Qt\2010.04\qt\include\ActiveQt" -I"debug" -I"......\Qt\2010.04\qt\mkspecs\win32-g++" -o debug\main.o main.cpp main.cpp: 在函数'int main(int, char **)': main.cpp:14: 警告:未使用的变量'派生' g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem ,console -mthreads -Wl -o debug\dataSenderReceiverExample.exe debug/main.o -L"c:\Qt\2010.04\qt\lib" -L../dataSenderReceiver/debug -ldataSenderReceiver -lQtCored4 mingw32-make[1]:离开目录C:/Entwicklung SVN/debug test/dataSenderReceiverExample' mingw32-make: Leaving directoryC:/Entwicklung SVN/debug test/dataSenderReceiverExample' ../dataSenderReceiver/debug/libdataSenderReceiver.a(derived.o):C:\Entwicklung SVN\debug test\dataSenderReceiver/derived.cpp:14: 未定义引用Derived_02::Derived_02()' ../dataSenderReceiver/debug/libdataSenderReceiver.a(derived.o):C:\Entwicklung SVN\debug test\dataSenderReceiver/derived.cpp:15: undefined reference toDerived_02:: method()' collect2: ld 返回 1 退出状态 mingw32-make[1]: * [debug\dataSenderReceiverExample.exe] 错误 1 ​​mingw32-make: * [debug] 错误 2 Prozes "C:/Qt/2010.04/mingw/ bin/mingw32-make.exe" wurde mit dem Rückgabewert %2 bedet。Fehler beim Erstellen des Projekts dataSenderReceiverExample (Ziel: Desktop) Beim Ausführen des Build-Schritts 'Make'

请帮忙!

0 投票
2 回答
3862 浏览

c++ - Qt - 遍历 QRadioButtons

我有一个正在为学校工作的小组项目。我小组的一个成员创建了一个包含约 75 个单选按钮的窗口。我想在按下按钮时强制所有这些都“清除”或“未选中”。

有谁知道这样做的好方法?我一直在研究 QObjectList 但我不能简单地做 QObjectList *children = new QObjectList(ui->groupBox->children()); 并使用 for 循环循环它们,因为 QObjectList 似乎没有下一个方法..

我也尝试过做类似的事情

但是因为迭代器是一个 QObject,setCheckable 不像单选按钮那样存在。

想法/提示将不胜感激。

编辑:我什至会提示一种迭代具有相似名称的变量的方法。例如,我所有的单选按钮都命名为 RadioButton_1、RadioButton_2 等。

0 投票
3 回答
9341 浏览

c++ - Qt - Q_OBJECT 与 #include

使用Q_Object宏和#include <QObject>有同样的效果吗?换句话说,它们是出于同一目的的两种不同方式吗?

谢谢。

0 投票
4 回答
1258 浏览

qt - Q_OBJECT 宏和元对象代码

这个链接:http ://doc.trolltech.com/4.5/moc.html#moc说

moc 工具读取 C++ 头文件。如果它找到一个或多个包含 Q_OBJECT 宏的类声明,它会生成一个 C++ 源文件,其中包含这些类的元对象代码。

什么是对象代码?

编辑 1

如何知道我应该在哪些类中编写 Q_OBJECT?一个例子是信号和插槽,还有其他需要使用的情况吗?