qt - 使用 QListWidgetItem::setData 存储指针

标签 qt qlistwidget

我有一个 QListWidget的日历。每个QListWidgetItem在逻辑上与 Calendar 的实例相关联,这是一个属于应用程序模型端的类。

我可以使用 QListWidgetItem::setData 以指针的形式存储这个关联吗? ?当我尝试这样做时,我收到以下错误:

error: 'QVariant::QVariant(void*)' is private

最佳答案

void* 还有另一个构造函数:QVariant::QVariant(int typeOrUserType, const void * copy)你应该传递一个唯一的整数来表示指针类型。

但是如文档所述,您可以使用 Q_DECLARE_METATYPE(Calendar*) 声明您的指针类型。并使用 QVariant::fromValue<Calendar*>(...)QVariant::value<Calendar*>()存储和检索值。

或者相反,因为您使用的是 QListWidget您可以将 QListWidgetItem 子类化而不是常规模型,并添加 Calendar*具有所需访问器的成员变量,以避免使用 QVariant 的开销.

关于qt - 使用 QListWidgetItem::setData 存储指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9248001/

相关文章:

c++ - 从 Qt 中的多个线程绘制

qt - 将填充有文件名的 QListWidget 中的选定项目复制到剪贴板,但作为文件(不是文本)

python - 设置标志使项目不可选择,稍后再次可选择

c++ - 在 QT Creator 中构建时强制重新链接

c++ - 使用 QRegularExpression 从句子中提取小数

c++ - Qt 应用程序的布局设计问题

Python PyQt4 QFileDialog 图像并在 QListWidget 中加载

c++ - 使用 show() 只打开一个 QDialog 实例,如果我关闭 QDialog,对象是否也被删除

c++ - QListWidget::setEditTriggers(QAbstractItemView::AnyKeyPressed) 不工作

python - 无法使用自定义小部件更改可检查 QListViewItem 的状态