qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库
提要
此文分別就qt生成純代碼的動態庫,含有ui文件的動態庫以及含有資源文件qss文件和切圖的動態庫。
實現
1.純代碼的生成qt庫。即沒有ui文件的項目。
 打開QtCreate,新建文件,選擇library.
 
 接下來填寫項目的名稱,選擇生成的路徑,然后到下圖所示步驟。
 
 選擇共享庫,包含的模塊采用默認的Core,由于這里只能選擇一個模塊,后面再在pro文件中添加所需的模塊。類名可以自己修改。然后下一步后到了選擇編譯器,根據自己需要選擇,然后再下一步。到此生成了項目。
 如下圖:
 
 打開pro文件,可以看到此時不包含gui模塊,因為我們此項目不需要ui界面,所以不改動這個,不過可以通過DESTDIR 參數來指定生成的動態庫的位置,這里指定的生成的動態庫保存在工程目錄下的生成的文件夾mydll下。
保持ui文件不變,這時可以直接在onedll.h和onedll.cpp中編寫代碼,也可以采用重命名的方式修改名字。編寫好代碼后,直接編譯,便會在當前的版本下生成.dll文件(當前針對于windows環境)。
 2.帶ui界面的動態庫
 前面創建動態庫的方法和上面一樣,創建好項目之后,打開pro文件,因為是需要ui界面的,所以要將pro文件做一些修改。需要加上gui和widgets模塊。修改后的pro文件如下。
在項目上右鍵添加新文件,在彈出的窗口中選擇qt–》設計師界面。
 
 創建ui界面類,將類名寫為和onedll一樣,這樣可以覆蓋原來的onedll文件。
 
 
 點擊下一步,再點擊完成,這時彈出一個窗口,如下圖所示:
 
 問是否覆蓋原有的onedll文件,點擊ok。
 修改后的項目的結構如下:
 
 添加ui界面類后,
發現少了之前的宏,由于我們要生成動態庫,所以還是要添加上。
#ifndef ONEDLL_H #define ONEDLL_H#include "onedll_global.h" #include <QDialog>namespace Ui { class OneDll; }class ONEDLL_EXPORT OneDll : public QDialog {Q_OBJECTpublic:explicit OneDll(QWidget *parent = nullptr);~OneDll();private:Ui::OneDll *ui; };#endif // ONEDLL_H修改后為上述內容,這時可以在界面類中編寫代碼,來構思自己的界面庫。編寫完之后,同樣編譯一下就可以在指定的目錄DESTDIR = …/mydll下生成庫文件。
 3.帶有資源文件的界面庫,包含qss。
 首先和之前一樣創建庫項目,之后由于是界面庫,采用和上面2提到的方法一樣添加ui界面類文件,修改pro文件和.h類聲明中添加導出宏。接下來添加資源文件。在項目文件夾上右鍵添加新文件,選擇資源文件,
 
 點擊choose按鈕,出現下面的界面。
 
 需要添加資源文件所在的文件夾的名稱,這里可以自己起名,我用的是qrc,填好之后,點擊下一步,再點擊完成。此時會出現一個界面如下:
 
 首先點擊添加按鈕,出現兩個列表,一個是文件,一個是前綴,此時文件是被置灰的,點擊前綴,界面生成前綴如下:
 
 再點擊添加按鈕,此時兩個列表都可以點擊,點擊文件,會彈出一個文件選擇框,選擇自己需要添加的圖片,添加好需要添加的圖片之后,可以按照之前的步驟先添加前綴再添加qss文件,也可以直接添加qss文件,將qss文件與圖片添加在同一個前綴下。
 接下來,在qss文件中編寫樣式。然后編譯生成庫文件。
最后說一下動態庫的使用:
純代碼的動態庫和具有ui界面的動態庫使用是一樣的,不一樣的是帶有資源文件和qss文件的動態庫。
純代碼的動態庫的使用
在要使用的項目目錄下建立頭文件文件夾,庫文件夾,然后將之前生成庫的頭文件.h放入到要使用庫的項目的頭文件夾下面,把生成的動態庫拷貝到要使用庫的項目的庫文件夾下,然后打開要使用庫的項目,如下圖:
 
 貌似有人說可以在頭文件中只留下共有的部分,私有的可以刪除。這樣理輪上也時正確的,因為即使是庫的頭文件,使用時也只能使用公有的,但是我沒試過,可以試一下只留下頭文件的共有部分。
 進入.pro文件,可以在文件末尾添加如下代碼:
其中指出了動態庫需要的頭文件路徑,動態庫的所在路徑,以及動態庫名字。$$PWD表示工程目錄,-l后面表示庫文件的名字,不包含后綴.lib。
 然后在使用動態庫的文件中添加需要使用的頭文件,進行使用。
帶有資源文件的動態庫使用(圖片和qss文件)
其它的和上面動態庫使用的操作一樣,在此基礎上需要將使用的圖片拷貝到要使用動態庫的項目目錄下,如下圖:
 
 前提是要保持圖片的大致保存路徑不變,當時生成庫時以images文件夾的形式保存在工程目錄下,現在也按照當初的images文件夾的形式放到要使用動態庫的項目的工程目錄下。因為生成庫時文件中對于資源文件的使用使用的是工程目錄,現在也得放在工程目錄下。至于qss文件,是需要在使用動態庫的項目的main函數中加載qss文件,注意這里的文件路徑采用工程目錄,因為生成動態庫時文件存放的地方就是工程目錄下。示例代碼如下:
以上便是動態庫使用的一種方式,貌似還有其它的方式。學海無涯,加油!
總結
以上是生活随笔為你收集整理的qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: php读取模板生成静态功能,php 生成
- 下一篇: AVFoundation – AVAss
