0
所以我有一個自定義類Foo,它已經在類定義的末尾使用宏Q_DECLARE_METATYPE(Foo)
註冊爲元類型。QVariant.value <T>()導致問題
我可以設置列表中的項目,請檢查是否canConvert,但是當我嘗試實際製作的Foo類型的東西的項目不能在編譯時。
使用的QVariant從QModelIndex &index
傳遞:
Foo item(index.data(Qt::DisplayRole).value<Foo>())
失敗,出現以下錯誤(S):
no matching function for call to 'namespace::Foo::Foo(namespace::Foo)'
In instantiation of 'T qvariant_cast(const Foo&) [with T = namesapce::Foo]':
required from 'T QVariant::value() const [with T = namespace::Foo]'
no matching function for call to 'namespace::Foo::Foo(const namespace::Foo &)'
no matching function for call to 'namespace::Foo::Foo(const namespace::Foo&)'
no matching function for call to 'namespace::Foo::Foo(const namespace::Foo)'
In member function 'T QVariant::value() const [with T = namespace::Foo]'
所有從文件qvariant.h
我在做什麼錯這裏? 我的類有以下構造函數:
Foo::Foo(const Foo &)
Foo::Foo()
標題如下:
namespace a {
namespace b {
class Foo {
explicit Foo();
explicit Foo(const Foo &a);
...
};
} // b
} // a
Q_DECLARE_METATYPE(a::b::Foo)
顯示你的頭,你在那裏放置Q_DECLARE_METATYPE(美孚) – ixSci 2013-02-20 17:06:11
它最初的QVariant的一個子類,但也不能工作。 – ElCraneo 2013-02-20 18:09:06
這可能是對那些導致問題的構造函數使用'explicit'。此外,只是爲了確保,你怎麼叫'qRegisterMetaType():'? –
2013-02-20 18:45:11