1

我有QListView很多文件及其图标。QIconProvider通过 Win API 获取图标,将它们转换为QIconvia 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 源代码中找不到。

4

0 回答 0