2012-06-18 51 views
2

在Qt c + +,有沒有什麼辦法來設置資源編程?
我想讓用戶設置將被加載到應用程序(QtWebKit)中的exe圖標和他的html文件。
所以它會嵌入到當前正在使用的資源集合文件(.qrc)Qt可以以編程方式設置資源嗎?

+0

'和其它文件嵌入到應用程序當前正在編譯'確切在哪裏你想包括什麼?什麼是'嵌入misc文件'? – RedX

+0

更新了這個問題,基本上我想做一個簡單的配置工具,用戶可以設置他的圖標和文件(如html文件) ,可以嵌入到應用程序中以將其標記爲他的。 – user63898

+0

那麼你想要改變.qrc文件中的文件?如果是這種情況,那麼就有qt附帶的資源文件編輯器。 – RedX

回答

2

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()); 
} 
4

在Qt的資源系統的文件無法應用程序的運行時更改編譯的應用程序,因此不「以編程方式「,如果我正確理解你的話。

但是,您可以編程方式(在構建過程中使用腳本)生成.qrc文件,如果這是您想要的。但我想這是而不是你想要什麼,因爲你正在談論用戶,他們很可能不想重新編譯你的應用程序來使用它。

如果您想讓用戶在幾個圖標之間進行選擇(例如;但這可能適用於其他自定義),並讓他們選擇一個自定義文件。你可以從Qt資源和真正的文件系統中抽象出來,首先掃描應用程序的子文件夾中的圖標,然後查看資源(只需在本地版本不存在之前將:/添加到路徑中)即可。因此,用戶可以使用您使用此方法的本地文件「覆蓋」所有資源文件。

作爲另一個例子,我成功地將這種方法應用於語言文件。 :/lang/中有一些默認語言的文件,但用戶也可以將文件放在<appdir>/lang/中並使用它們。請記住,如果用戶也可以在可用文件之間進行選擇,則可能需要在運行時在目錄中搜索合適的文件。

+0

是的,以及即時通訊尋找客戶,讓用戶配置應用程序的外觀和感覺 例如,Windows如何讓用戶設置exe圖標? – user63898

+0

@ user63898 Windows可執行文件的圖標是可執行文件本身的一部分(也許還有其他方法,但我只知道這一點)。使用Qt,可執行圖標將成爲構建步驟的一部分。但是,您可以在桌面上或開始菜單中設置鏈接的圖標,而無需更改鏈接後面的可執行文件。爲此,您需要知道鏈接本身的位置,您無法知道應用何時運行,但用戶可以使用屬性對話框更改鏈接圖標,因此我不認爲需要更改鏈接圖標在正在運行的應用程序中編程的圖標 – leemes

相關問題