Qt c++ で、プログラムでリソースを設定する方法はありますか?
アプリケーション(QtWebKit)にロードされるexeアイコンと彼のhtmlファイルをユーザーが設定できるようにしたい。
そのため、リソース コレクション ファイル (.qrc) を使用して現在コンパイルされているアプリケーションに組み込まれます。
2 に答える
Qtリソースシステムのファイルは、アプリケーションの実行中に変更することはできません。したがって、私が正しく理解していれば、「プログラムで」変更することはできません。
ただし、これが必要な場合は、プログラムで (ビルド プロセスでスクリプトを使用して) .qrc ファイルを生成できます。しかし、これはあなたが望んでいるものではないと思います.userについて話しているので、アプリケーションを再コンパイルして使用したくない可能性が高いです。
ユーザーにいくつかのアイコンから選択させたい場合 (例として; ただし、これは他のカスタマイズにも適用される場合があります)、カスタム ファイルを選択させます。最初にアプリケーションのサブフォルダーでアイコンをスキャンし、次にリソースをスキャンすることで、Qt リソースと実際のファイル システムから抽象化できます (:/
ローカル バージョンが存在しない場合は、パスの先頭に追加するだけです)。そのため、ユーザーは、この方法を使用するローカル ファイルを使用して、すべてのリソース ファイルを「上書き」する可能性があります。
別の例として、この方法を言語ファイルに適用して成功しました。:/lang/
一部のデフォルト言語用のファイルがありますが、ユーザーはファイルを配置し<appdir>/lang/
て使用することもできます。ユーザーが使用可能なファイルから選択する場合は、実行時にディレクトリ内の適切なファイルを検索する必要がある場合があることに注意してください。
Windows は、ユーザーが「exe」アイコンを設定することを「許可」しません。追加のツールやコードがないわけではありません。もちろん、Windows API を使用して実行可能ファイルを変更することは自由ですが、これが機能することは保証されていません。アプリケーションが安全な方法でインストールされている場合、アプリケーションは管理者権限なしで実行され、アイコンを変更することはできません。基本的に:それはばかげた考えです。やらないでください。
もちろん、次のコードを使用して、実行時にアプリケーションのアイコンを変更できます。
void setIcon(QWidget* widget, QPixmap* pixmap);
{
WId wid = widget->winId();
HINSTANCE inst = (HINSTANCE)qWinAppInst();
QPixmap large = pixmap->scaled(48, 48, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
SendMessage(wid, WM_SETICON, ICON_BIG, (LPARAM)large->toWinHICON());
QPixmap small = pixmap->scaled(24, 24, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
SendMessage(wid, WM_SETICON, ICON_SMALL, (LPARAM)small->toWinHICON());
}