问题标签 [qpointer]
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++ - 我可以将 QScriptEngine.toScriptValue 与 QPointer 一起使用到 QObject 吗?
关于使用 QtScript以及在脚本值和 C++ 之间来回转换的文档提到您可以使用 QScriptEngine.toScriptValue 和 QObject* 类型并让它自动工作,转换对象并相应地返回脚本引用。这种相同的行为是否适用于 aQPointer<QObject>
还是我必须创建自己的元类型?如果是这样,它是否也适用于处理 QPointers 到 QObject 子类?
我感兴趣的主要事情是,如果我将 QPointer 上的 QScriptEngine.toScriptValue 调用到子类实例而不是常规指针,是否将使用 QObject 子类的 Q_PROPERTY 声明的属性自动带入脚本。
c++ - 查找作为 QPointer 的子成员
我正在尝试findChildren
从我的程序中提取参数列表。代码如下:
它编译得很好,但是当我在调试中进入 (this) 时,有几种成员类型,QPointer<TParameter>
但我的theFullParameterList
出现是空的。 TParameter
是一个自定义类。有什么方法可以找到在 a 内的那个班级的孩子QPointer
吗?
c++ - 这是使用 QPointer 的正确方法吗?
如何检查指针的内容是否被删除?如果我像这样使用 QPointer:
然后我有
最后一个 A.function() 会导致 _p->function() 被调用并因此导致访问冲突吗?当我删除 p 时,_p 会发生什么?
c++ - 指向主窗口的 QPointer
我正在创建一个对话框窗口并想知道如何将指针传递MainWindow
给它?
比如说,我需要从MainWindow
我的对话框中访问一个 getter 方法。
MainWindow
声明直接来自向导:
在我的 dialog.h 中:
在构造函数中:
这给了我错误:从类型'MainWindow *'到类型'QPointer :: QObjectType * {aka QObject *}'的无效静态转换
我不知道为什么。
c++ - 使用 QPointer 和 QObject::connect 与 C++11
我正在使用 Qt 5.4 并尝试在QTcpSocket
发出来自我的“断开连接”信号时恢复接受新连接。所以我分别在 .h 和 .cpp 文件中写了以下内容:
如您所见,我将QPointer
类用于tcpSocket
. tcpSocket
使用上面的代码,我无法构建我的程序并收到“没有匹配的函数来调用...”错误,而在没有定义的情况下我没有任何问题QPointer
。
我应该如何解决这个问题?
qt - QPointer 检查是否为NULL?
当我删除QPointer
指向的对象时,我检查 的值QPointer
,它不是NULL
,但是当我检查它的isNull
函数时,它返回true
。
更奇怪的是,当我执行 ( !m_qpointer
) 时,它也会返回true
。那么这怎么可能呢?
c++ - QPointers 的排序向量
我有:
和排序的调用:
我正在使用自定义排序功能:
我正在尝试根据“getSecsTillDeadline()”函数返回的值对 QPointers 向量进行排序
但我收到错误'必须使用'。*'或'-> *'来调用指向成员函数的指针'。
我哪里错了?错误在文件predefined_ops.h 中,所以我想我自己的代码中有一些东西可以更改以使其正常工作
完整的错误是:
c++ - 使用 QPointer 连接信号和插槽
我正在创建一个 GUI 应用程序,其中有一个动态QComboBox
. 我曾经QPointer
存储过QComboBox *
这样的东西,以便在删除时(在其他地方)可以避免悬空指针。即使QPointer
应该是带有转换运算符到原始指针类型的智能指针,但当我将它传递给QObject::connect()
(新样式)时,我会收到编译器错误。
例子:
编译器说:
CMB_ItemType
我可以通过替换->使其工作,CMB_ItemType.data()
但为什么不自动使用转换运算符?
c++ - 我应该如何在 Qt 中存储指针?
我的宠物项目已经到了应该开始跟踪指针生命周期的地步,我正在尝试为它开发一些系统。遗憾的是,在任何地方都使用智能指针的流行建议并不适用,因为 Qt API 本身在每个场合都使用裸指针。所以,我想出的是:
对于 Qt 拥有的一切,
- 在本地使用裸指针;
- 也可以在函数之间传递它们;
- 将它们存储为子类,在转换为裸之前
QPointer
进行检查。isNull()
对于我完全拥有的所有东西,请按照建议使用智能指针。我将使用
std::
这里的版本。困扰我的案子。对于切换所有权的对象(例如从布局中添加/删除的小部件)
- 赤裸裸地使用、存储、传递指针;
delete
在适当的时候手动设置它们。
建议、意见、建议?我自己不太喜欢这个方案。
c++ - 将 std::shared_ptr 转换为 QPointer
我们的应用程序设计得很糟糕——它使用父子关系来管理我们的一些对象std::shared_ptr
。这会在删除其子对象QObject
时导致段错误,然后尝试删除它。QObject::~QObject
shared_ptr
我们讨论了这个问题,但目前看不出有什么办法可以轻松解决这个问题,所以在我们修复它之前,我需要使用一些肮脏的技巧。
现在我拥有的是一个std::shared_ptr<MyObject> getMyObjectPtr()
功能。我需要将结果放入QPointer<MyObject>
- QPointers 是弱指针,仅指示它们管理的 QObject 是否被删除。我不能以任何方式更改该功能,它会破坏整个应用程序。
我尝试了一些自定义解除分配器的技巧,但这似乎不起作用。
但是这样,一旦我的函数结束,指针就会被删除。据推测,自定义解除分配器与数据一起移动。