我有QListView
很多文件及其图标。QIconProvider
通过 Win API 获取图标,将它们转换为QIcon
via QPixmap::fromWinHICON()
,然后将它们转换回 HICON。这会导致每个图标有 200 毫秒的延迟。但最糟糕的是QPixmap不能在后台线程中使用,所以UI卡住了。
这就是为什么我决定使用纯 Win API 来更快地获取图标。
这是我的代码:
SHFILEINFO sfi;
HWND hwnd = listView->winId();
HIMAGELIST imageList = (HIMAGELIST) SHGetFileInfo (TEXT ("c:\\"),
NULL, &sfi, sizeof (sfi), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
if (!ListView_SetImageList(hwnd, imageList, LVSIL_SMALL))
{
qDebug() << "FAIL";
}
不幸的是,这不起作用,我得到
失败
在应用程序输出中。
我该如何使用 Win API?也许QListView
没有翻译成 Win API,ListView
而是翻译成其他类......我在 Qt 源代码中找不到。