簡體   English   中英

如何將QVariant轉換為自定義類?

[英]How can I cast a QVariant to custom class?

我正在使用Momentics IDE(本機SDK)開發BlackBerry 10移動應用程序。

我有一個listview,我想用C ++來處理它的項目(我需要使用C ++而不是QML)。

我可以使用“connect”指令獲取索引路徑,但是我將QVariant解析為自定義類有問題;

Q_ASSERT(QObject::connect(list1, SIGNAL(triggered(QVariantList)), this, SLOT(openSheet(QVariantList))));

QVariant selectItem = m_categoriesListDataModel->data(indexPath);

我嘗試使用如下的靜態演員

Category* custType = static_cast<Category*>(selectItem);

但它返回:

"invalid static_cast from type 'QVariant' to type 'Category*'"

誰可以幫我這個事 ?

您可以嘗試使用qvariant_castqobject_cast

QObject *object = qvariant_cast<QObject*>(selectItem);
Category *category = qobject_cast<Category*>(object);

此外,永遠不要將任何持久性語句放入Q_ASSERT。 未啟用斷言時不會使用它。

編輯:適用於非QObject派生類型(參見本次案例的最終競賽答案)

首先,您需要將您的類型注冊為QVariant托管類型的一部分

//customtype.h
class CustomType {
};

Q_DECLARE_METATYPE(CustomType)

然后,您可以通過以下方式從QVariant檢索自定義類型:

CustomType ct = myVariant.value<CustomType>();

這相當於:

CustomType ct = qvariant_cast<CustomType>(myVariant);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM