Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 将QStandardItemModel转换为QVariant_Qt_Qobject_Qvariant - Fatal编程技术网

Qt 将QStandardItemModel转换为QVariant

Qt 将QStandardItemModel转换为QVariant,qt,qobject,qvariant,Qt,Qobject,Qvariant,我正试图向PythonQt发送一个QStandardItemModel派生的对象,但对于如何发送它,我有点困惑。当我使用boost::python时,我有几个控件,比如boost::noncopyable,以确保我没有重新创建这个对象,而是与python共享它。我还拥有一些结构,可以从python内部提供指向python的boost共享指针 class场景:public boost::从这个公共QStandardItemModel启用共享 然而,在PythonQt中,我不确定有什么可用。函数调用

我正试图向PythonQt发送一个QStandardItemModel派生的对象,但对于如何发送它,我有点困惑。当我使用boost::python时,我有几个控件,比如boost::noncopyable,以确保我没有重新创建这个对象,而是与python共享它。我还拥有一些结构,可以从python内部提供指向python的boost共享指针

class场景:public boost::从这个公共QStandardItemModel启用共享

然而,在PythonQt中,我不确定有什么可用。函数
调用
为所有函数参数获取一个QVariantList

QVariant PythonQt::call(PyObject*object,const QString&callable,const QVariantList&args=QVariantList))

我现在困惑的是如何通过QVariant将我的对象转换成python。因为它是从QStandarItemModel派生的,所以我想它已经是寄存器了

void MyObject::someFunction(QString fileName)
{
    QVariant myObjectV = qVariantFromValue(this);
    // send to python
    ...
}
但这给了我以下错误:

'qt\u元类型\u id':不是'QMetaTypeId'的成员。

我在声明类后尝试注册它,但这会引发另一个错误

class MyObject : public QStandardItemModel
{
Q_OBJECT
...
};
Q_DECLARE_METATYPE(MyObject)

QStandardItemModel::QStandardItemModel(const QStandardItemModel&) is private within this context.  
我实际上得到了两次错误——一次是在我添加Q_DECLARE_元类型的头中,另一次是在另一个头中,该头中有一个类总是从QStandardItemModel派生,但在其他方面是不相关的

Q_DECLARE_元类型是否是将此对象转换为QVariant的正确方法

BOOST_PYTHON_模块(场景) { 类别("场景);;
}

是的,默认情况下,
QVariant
可以采用以下类型之一——它们不足以完成您的任务。您应该通过qmetatype系统自己声明其他类型。因此,您应该调用函数。

是的,默认情况下,
QVariant
可以采用以下类型之一——它们不足以完成您的任务。您应该通过qmetatype系统自己声明其他类型。因此,您应该调用函数