问题标签 [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.
c++ - 来自 QObject::connect 的详细信息
如果发生故障,有没有办法从中获取详细的故障信息QObjet::connect
?
返回的布尔值不提供有关失败原因的任何信息。
我希望异常在 C++ 中能像在 Java 中一样被广泛使用。
qt - 在 Qt 中,如何使用具有多重继承的 Q_OBJECT 插槽和信号?
我浏览了相关的问题,找不到任何能准确解决我所说的问题的东西,所以让我来描述一下。
我有一个类,假设 foo 需要有自己的插槽和信号,但还需要从 QXmlDefaultHandler 继承(听起来很奇怪,但我在尝试使用 QHttp 将网站直接读入 QBuffer 时遇到了这种情况)。
这段代码,如果伴随着一个 cpp 将 bar 连接到其他地方的信号,将不会编译。您将收到有关 QObject 的某些成员不是 QXmlDefaultHandler 成员的错误。此外,您不能移动 Q_OBJECT,否则您会因为未实现某些东西而收到 vtable 错误(继续!试试吧!)。
请查看我对(非常简单的)修复的回答。如果我认为你解释得比我好,我会接受投票给你作为接受的答案。
编辑:对于您的 c++ 和 Qt 兽医,如果您能更好地解释它,请发布答案。我花了很多时间查找此信息,所以如果您能做得比我更好,请帮助其他人。
qt - 在 Qt 中检查 QObject 派生类类型的正确方法
假设我有两个课程:
那我去
现在,我如何确保“a”是 A 类的实例,而“b”是 B 类的实例?
目前我做这样的事情:
有没有更好的办法?
qt - 在Qt的组合框中添加QObject
我有一个我创建的自定义类,比如 MyClass。现在如何在下面的组合框中添加对 MyClass 的引用作为第二个参数的引用:
this->ui->comboBox->addItem("item-1", );
目的是当项目更改甚至被触发时,我想获取 MyClass 的特定类实例并相应地进行处理。
qt - QObject 孩子的顺序(策略问题)
对于我的一个项目,我有一个 QObject 派生对象树,它利用 QObject 的父/子功能来构建树。
这非常有用,因为我使用信号和槽,使用 Qt 的受保护指针并期望父对象在删除子对象时删除它们。
到现在为止还挺好。不幸的是,现在我的项目需要我管理/更改孩子的顺序。QObject 没有提供任何改变其子级顺序的方法(例外:QWidget 的 raise() 函数——但在这种情况下这没有用)。所以现在我正在寻找一种控制孩子顺序的策略。我有一些想法,但我不确定它们的优缺点:
选项 A:自定义排序索引成员变量
使用int m_orderIndex
成员变量作为排序键并提供一个sortedChildren()
方法,该方法返回按此键排序的 QObject 列表。
- 易于实施到现有的对象结构中。
- 当
QObject::children()
方法被覆盖时会出现问题 - 当项目的顺序改变时会导致循环期间出现问题,也比默认实现更昂贵。 - 如果所有排序键都相等或 0/默认值,则应回退到 QObject 对象顺序。
选项 B:子项冗余列表
在 a 中维护一个冗余子级列表QList
,并在创建和销毁时将子级添加到其中。
- 需要昂贵的跟踪添加/删除的对象。这基本上会导致第二个孩子/父母跟踪和大量信号/插槽。QObject 已经在内部完成了所有这些操作,因此再次执行此操作可能不是一个好主意。也感觉像改变孩子的顺序这样简单的事情增加了很多臃肿。
- 良好的灵活性,因为可以根据需要修改子项的 QList。
- 允许一个孩子多次出现在 QList 中,或者根本不出现(即使它可能仍然是 QObject 的一个孩子)
选项 C:...?
任何想法或反馈,尤其是来自已经在自己的项目中解决此问题的人,都将受到高度赞赏。新年快乐!
qt - 获取应用程序中创建的所有 QObject 的列表
要获取应用程序中创建的所有 QWidget 的列表,我们可以简单地调用QApplication::allWidgets()
.
我已经阅读了文档,但我还没有找到类似的东西来获取所有 QObjects 的列表。如果一个应用程序创建了不是 QWidgets 的独立 QObjects,我就没有这样的功能可以使用。
有没有办法获得这样的名单?
qt4 - 有没有办法在 QObject 中的属性更改时得到通知?
首先,我使用的是 Qt 4 库和 C++。
当属性(动态或其他)发生变化时,是否有办法通知(信号、事件、?)QObject
?
我无法修改QObject
该类,因为它是 Qt4 库的一部分。QObject
关于这里的更多信息。
qt - Qt:以正确的方式设置我自己的 QWidget
在 Qt 中,我正在尝试设置自己的 QWidget,因此由于内存管理和其他事情,一切都应该正常工作。但我似乎无法用指针、堆和堆栈来解决问题。我有我的小部件 MyWidget,它有一个带有一些对象的 QList。我无法弄清楚如何正确设置所有内容。
您可以在下面看到我的代码,对此我有一些疑问:
instace 变量列表是在堆上创建的,在栈上创建会更好吗?
在我的列表中,我有指针,在堆栈上创建对象并将其附加到列表中会更好吗?(所以我在列表中根本没有指针)
当我将对象附加到列表时,它们会自动将列表作为其父级吗?那么当我删除列表时,列表中的所有对象都会被删除吗?
我尝试使用的 for each 循环不起作用,我得到“此操作需要指针/数组类型而不是 'int'”
在我的代码中,我想创建其他小部件,将列表中的对象作为参数。这是像我一样做的正确方法吗?MyOtherWidget 的实例方法如下所示: MyOtherWidget(MyObject *myObject, QWidget *parent)
谢谢你的帮助!我是 Qt 和 C++ 的新手,所以如果你能引导我朝着正确的方向前进,那就太好了。我怎样才能以正确的方式设置它以使其变得容易,不要出现内存泄漏并根据需要使用尽可能少的内存。你将如何设置相同的东西?
这是我的代码:
MyWidget.h:
我的小部件.cpp:
c++ - Qt 链接器错误:“未定义对 vtable 的引用”
这是我的标题:
这是我的课:
我收到链接器错误:
- 这意味着我有一个未实现的虚拟方法。但是我的课上没有虚拟方法。
- 我注释掉了向量,认为这是原因,但错误并没有消失。
- 这
Message
是一个复杂的struct
,但即使使用int
而不是解决问题。
c++ - 从 QObject 继承时可以使用 QSharedData 吗?
如何在 Qt 中隐藏私有实现(隐式共享):
我的 Employee.h 标头中有以下 Employee.cpp :
但是当我将 EmployeeData 移动到私有部分时,比如 Employee.cpp,我得到:错误:无效使用不完整类型“struct EmployeeData”</p>
但是,如果我将定义更改为此它可以正常工作:
因此,我可以在继承 QObject 的同时使用 QSharedData 吗?