【发布时间】:2023-04-01 08:22:02
【问题描述】:
我使用 QAbstractItemModel 为键盘启动器上下文中的各种事物提供图标。
这些是要求:
- 前端是抽象的,因此该模型应该适用于小部件以及 QML 视图。这是由于装饰角色无法退回Qicons(AFAIK)的限制。 Li>
- 后端应该与平台无关。在 Linux 上,我使用
QMimeDatabase::mimeTypeForFile>QMimeType::iconName>QIcon::fromTheme。在 macOS Qt 上不提供此类功能,因此我计划使用返回NSImage的icon(for:),我必须将其绘制到 QPixmap 中。
没有图标,没有路径。只剩下QPixmap了,对吧?这是要走的路吗?我可以在 QML 中显示来自 C++ 模型的 QPixmap 吗?或者我应该缓存磁盘上的图标并通过模型中的路径吗?
另一个要求是它应该相当快,因为它是一个键盘启动器,结果应该立即显示出来。
【问题讨论】:
-
为什么你认为模型不能返回
QIcon? AFAIK,这不是真的。 -
我可以将 QPixmap 从 C++ 模型传递到 QML 吗? 看看
Qt::DecorationRole:要以图标形式呈现为装饰的数据. (QColor、QIcon 或 QPixmap) -
我正在为你做一个例子。拜托,待命。
-
当然模型可以返回任何 QVariant,但是 QML 视图不能使用 QIcon afaik。 @scopchanov 编辑了这个问题。抱歉不够清楚。
-
@ManuelSchneid3r,我快到了。 ;) 请稍候。
标签: c++ macos qt model-view-controller icons