问题标签 [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.

0 投票
1 回答
138 浏览

c++ - 我可以将 QScriptEngine.toScriptValue 与 QPointer 一起使用到 QObject 吗?

关于使用 QtScript以及在脚本值和 C++ 之间来回转换的文档提到您可以使用 QScriptEngine.toScriptValue 和 QObject* 类型并让它自动工作,转换对象并相应地返回脚本引用。这种相同的行为是否适用于 aQPointer<QObject>还是我必须创建自己的元类型?如果是这样,它是否也适用于处理 QPointers 到 QObject 子类?

我感兴趣的主要事情是,如果我将 QPointer 上的 QScriptEngine.toScriptValue 调用到子类实例而不是常规指针,是否将使用 QObject 子类的 Q_PROPERTY 声明的属性自动带入脚本。

0 投票
1 回答
123 浏览

c++ - 查找作为 QPointer 的子成员

我正在尝试findChildren从我的程序中提取参数列表。代码如下:

它编译得很好,但是当我在调试中进入 (this) 时,有几种成员类型,QPointer<TParameter>但我的theFullParameterList出现是空的。 TParameter是一个自定义类。有什么方法可以找到在 a 内的那个班级的孩子QPointer吗?

0 投票
1 回答
1779 浏览

c++ - 这是使用 QPointer 的正确方法吗?

如何检查指针的内容是否被删除?如果我像这样使用 QPointer:

然后我有

最后一个 A.function() 会导致 _p->function() 被调用并因此导致访问冲突吗?当我删除 p 时,_p 会发生什么?

0 投票
1 回答
522 浏览

c++ - 指向主窗口的 QPointer

我正在创建一个对话框窗口并想知道如何将指针传递MainWindow给它?

比如说,我需要从MainWindow我的对话框中访问一个 getter 方法。

MainWindow声明直接来自向导:

在我的 dialog.h 中:

在构造函数中:

这给了我错误:从类型'MainWindow *'到类型'QPointer :: QObjectType * {aka QObject *}'的无效静态转换

我不知道为什么。

0 投票
1 回答
752 浏览

c++ - 使用 QPointer 和 QObject::connect 与 C++11

我正在使用 Qt 5.4 并尝试在QTcpSocket发出来自我的“断开连接”信号时恢复接受新连接。所以我分别在 .h 和 .cpp 文件中写了以下内容:

如您所见,我将QPointer类用于tcpSocket. tcpSocket使用上面的代码,我无法构建我的程序并收到“没有匹配的函数来调用...”错误,而在没有定义的情况下我没有任何问题QPointer

我应该如何解决这个问题?

0 投票
1 回答
1564 浏览

qt - QPointer 检查是否为NULL?

当我删除QPointer指向的对象时,我检查 的值QPointer,它不是NULL,但是当我检查它的isNull函数时,它返回true

更奇怪的是,当我执行 ( !m_qpointer) 时,它也会返回true。那么这怎么可能呢?

0 投票
1 回答
276 浏览

c++ - QPointers 的排序向量

我有:

和排序的调用:

我正在使用自定义排序功能:

我正在尝试根据“getSecsTillDeadline()”函数返回的值对 QPointers 向量进行排序

但我收到错误'必须使用'。*'或'-> *'来调用指向成员函数的指针'。

我哪里错了?错误在文件predefined_ops.h 中,所以我想我自己的代码中有一些东西可以更改以使其正常工作

完整的错误是:

0 投票
1 回答
891 浏览

c++ - 使用 QPointer 连接信号和插槽

我正在创建一个 GUI 应用程序,其中有一个动态QComboBox. 我曾经QPointer存储过QComboBox *这样的东西,以便在删除时(在其他地方)可以避免悬空指针。即使QPointer应该是带有转换运算符到原始指针类型的智能指针,但当我将它传递给QObject::connect()(新样式)时,我会收到编译器错误。

例子:

编译器说:

CMB_ItemType我可以通过替换->使其工作,CMB_ItemType.data()但为什么不自动使用转换运算符?

0 投票
2 回答
1317 浏览

c++ - 我应该如何在 Qt 中存储指针?

我的宠物项目已经到了应该开始跟踪指针生命周期的地步,我正在尝试为它开发一些系统。遗憾的是,在任何地方都使用智能指针的流行建议并不适用,因为 Qt API 本身在每个场合都使用裸指针。所以,我想出的是:

  1. 对于 Qt 拥有的一切,

    • 在本地使用裸指针;
    • 也可以在函数之间传递它们;
    • 将它们存储为子类,在转换为裸之前QPointer进行检查。isNull()
  2. 对于我完全拥有的所有东西,请按照建议使用智能指针。我将使用std::这里的版本。

  3. 困扰我的案子。对于切换所有权的对象(例如从布局中添加/删除的小部件)

    • 赤裸裸地使用、存储、传递指针;
    • delete在适当的时候手动设置它们。

建议、意见、建议?我自己不太喜欢这个方案。

0 投票
1 回答
743 浏览

c++ - 将 std::shared_ptr 转换为 QPointer

我们的应用程序设计得很糟糕——它使用父子关系来管理我们的一些对象std::shared_ptr。这会在删除其子对象QObject时导致段错误,然后尝试删除它。QObject::~QObjectshared_ptr

我们讨论了这个问题,但目前看不出有什么办法可以轻松解决这个问题,所以在我们修复它之前,我需要使用一些肮脏的技巧。

现在我拥有的是一个std::shared_ptr<MyObject> getMyObjectPtr()功能。我需要将结果放入QPointer<MyObject>- QPointers 是弱指针,仅指示它们管理的 QObject 是否被删除。我不能以任何方式更改该功能,它会破坏整个应用程序。

我尝试了一些自定义解除分配器的技巧,但这似乎不起作用。

但是这样,一旦我的函数结束,指针就会被删除。据推测,自定义解除分配器与数据一起移动。