たくさんQListView
のファイルとそのアイコンがあります。QIconProvider
Win API 経由でアイコンを取得し、それらをQIcon
viaQPixmap::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 APIListView
ではなく、他のクラスに変換されているのでしょう... Qt のソースでは見つかりませんでした。