【问题标题】:Is it possible to move a object that was created dynamically into a qthread?是否可以将动态创建的对象移动到 qthread 中?
【发布时间】:2012-12-08 00:21:40
【问题描述】:

这是一个关于 qthreads 的一般问题,我知道如何使用 movethread() 函数,但那是针对非动态创建的对象。

用户将通过选择添加按钮在 GUI 应用程序上创建对象。如果用户想要删除已创建的对象,也可以使用删除按钮。用户应该能够从列表视图中选择对象。我已经使用 qstyleeditemdelegate 创建了自定义列表视图的示例,我知道如何将列表移动到模型中。我担心线程。

我想做的是允许用户动态创建某个类的对象。然后将每个对象移动到 qthread 中。我应该继续寻找吗?任何提示、技巧或提示?

我可以创建一个将对象移动到线程中的函数吗?

Pseudo Code: 
void MoveThisObject(MyCustomObject Object)
{
       QThread* thread = new QThread;
       Object->moveToThread(thread);
       /****setup connections****/

       thread->start();
}

我仍在写下我需要的东西,我还没有真正创建实际的应用程序。

【问题讨论】:

  • 第一个问题:您正在通过值传递Object。因此,被移动的对象将一直存在到MoveThisObject() 的末尾。正如您所说的Object->,您可能只是错过了*
  • 既然用户可以选择列表视图项,我可以使用索引值来定位为该选定项运行的线程吗?
  • 听起来你想存储生成的线程,例如在QHash<int, QThread*>.

标签: qt qthread qt4.7


【解决方案1】:

您可以将 QObject(当然,只要它不是 QWidget)移动到不同的线程,无论它是否是动态创建的。大多数应用程序中的大多数 QObject 无论如何都是动态创建的,否则它们很难多态。

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 2012-03-04
    • 2015-06-19
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多