Qt用戶界面設(shè)計(jì)
《Qt用戶界面設(shè)計(jì)》由會員分享,可在線閱讀,更多相關(guān)《Qt用戶界面設(shè)計(jì)(576頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、Qt簡 介Qt的 作 用Qt的 特 性 及 優(yōu) 勢包 含 Qt的 系 統(tǒng) 的 架 構(gòu)如 何 學(xué) 習(xí) Qt Qt簡 介 圖 形 用 戶 界 面( Graphical User Interface) 是 指 采 用 圖 形 方 式顯 示 的 計(jì) 算 機(jī) 操 作 用 戶 界 面對 比 : 早 期 的 操 作 系 統(tǒng) , 如 DOS, CUI(Command line User Interface)命 令 行 模 式 的 人 機(jī) 接 口組 成 部 分 : 桌 面 、 視 窗 、 菜 單 、 按 鈕 、 圖 標(biāo) 等Qt是 跨 平 臺 的 C+應(yīng) 用 程 序 和 UI開 發(fā) 的 框 架Qt4有 超 過 5
2、00個(gè) 類 和 9000多 個(gè) 函 數(shù) , 使 用 Qt可以 迅 速 開 發(fā) 出 期 望 的 應(yīng) 用 程 序 Qt在 整 個(gè) 產(chǎn) 品 開 發(fā) 中 的 作 用構(gòu) 建 桌 面 環(huán) 境 ;為 應(yīng) 用 程 序 提 供 可 視 化 的 、 友 好 的 界 面 ;利 用 Qt類 庫 自 帶 的 功 能 構(gòu) 建 復(fù) 雜 應(yīng) 用 程 序 ;使 用 Qt構(gòu) 建 的 產(chǎn) 品 : http:/ Qt的 特 性 及 優(yōu) 勢 易 于 獲 取 , 個(gè) 人 應(yīng) 用 完 全 免 費(fèi)全 面 的 、 藝 術(shù) 級 的 應(yīng) 用 程 序 框 架良 好 的 跨 平 臺 性 , 一 勞 永 逸多 語 言 的 支 持 包 含 Qt的 系 統(tǒng)
3、 的 架 構(gòu) 包 含 Qt的 系 統(tǒng) 的 架 構(gòu) 學(xué) 習(xí) Qt可 用 的 資 源 NO1: Qt參 考 文 檔 , 包 括 類 的 簡 介 、 類 相 關(guān) 函 數(shù) 的 介紹 、 自 帶 例 程 的 源 碼 及 講 解 、 函 數(shù) 的 查 找 和 使 用 、 核心 特 性 、 關(guān) 鍵 技 術(shù) 等NO2:www.qtcn.org Qt中 文 論 壇 NO3: C+GUI Programming with Qt4,Second Edition -官 方 參 考 文 檔 , 講 解 精 到 Qt學(xué) 習(xí) 方 法NO1: 學(xué) 習(xí) Qt自 帶 教 程 , Qt的 example及 其 參 考 代 碼 。參
4、考 qtdemo程 序 , 學(xué) 習(xí) demo完 成 自 己 的 程 序 。NO2: 閱 讀 書 籍 , 隨 書 進(jìn) 行 編 程 練 習(xí) 。 如 C+GUI Qt4編 程 , 提 供 有 完 善 的 代 碼 Qt程 序 開 發(fā)QtCreator介 紹Hello Qt!程 序 開 發(fā) 流 程幾 個(gè) Qt練 習(xí) Qt Creator的 設(shè) 計(jì) 目 標(biāo) 是 使 開 發(fā) 人 員 能 夠 利 用 Qt 這 個(gè) 應(yīng) 用 程 序 框 架 更 加 快 速 及 輕 易 的 完 成 開 發(fā) 任 務(wù) 。Nokia 收 購 Qt之 后 在 Qt的 工 具 上 做 了 很 大 的 工 作 ,推 出 的 一 款 新 的 輕
5、 量 級 集 成 開 發(fā) 環(huán) 境 (IDE), 即 QtCreator。QtCreator IDE 能 夠 跨 平 臺 運(yùn) 行 , 支 持 的 系 統(tǒng) 包 括 Linux ( 32 位 及 64 位 ) 、 Mac OS、 Windows等 。 功 能 介 紹 :項(xiàng) 目 生 成 向 導(dǎo)高 級 C+ 代 碼 編 輯 器文 件 及 類 管 理 工 具集 成 了 Qt Designer集 成 了 qmake 構(gòu) 建 工 具集 成 了 圖 形 化 的 GDB 調(diào) 試 前 端 利 用 QtCreator開 發(fā) Qt應(yīng) 用 程 序 的 基 本 流 程 : 創(chuàng) 建 工 程 項(xiàng) 工 程 中 添 加 文 件 設(shè)
6、 計(jì) 界 面 編 寫 代 碼 實(shí) 現(xiàn) 功 能 調(diào) 試 運(yùn) 行 創(chuàng) 建 工 程打 開 QtCreator, “ File-New File or Project”, 選 擇 “Qt4 Gui Application” 輸 入 工 程 名 稱 : 如 ex01_helloQt選 擇 工 程 路 徑 : 如 D:project 根 據(jù) 應(yīng) 用 選 擇 功 能 模 塊 , 此 工 程 保 持 默 認(rèn) 即 可 。 創(chuàng) 建 Qt4 Gui Application時(shí) ,向 導(dǎo) 會 自 動(dòng) 生 成 一 個(gè) 新 類 , 將 來 可 在 該 類 中 完 成 應(yīng) 用 程 序 的 功 能 。此 步 設(shè) 置 該 類 名
7、 稱 , 選 擇 基 類 名 稱 , 及 設(shè) 置 該 類 代 碼 的 文 件 名 稱另 外 , 設(shè) 置 是 否 要 生 成 UI文 件 , 如 果 生 成 則 , 將 來 可 以 在 UI文 件 中 來 繪 制 界 面 。 最 后 一 步 “ Finish”即 可 完 成 工 程 創(chuàng) 建 在 工 程 管 理 窗 口 中 雙 擊 Forms下 的 mywidget.ui(UI文 件 ), 即 可 打開 Qt Designer(Qt界 面 設(shè) 計(jì) 器 )在 Designer中 設(shè) 計(jì) 界 面 編 譯 運(yùn) 行 程 序 : 在 工 程 名 上 右 鍵 , 選 擇 Run 運(yùn) 行 效 果 : 練 習(xí) 1
8、: 隱 藏 “ HelloQt!” 設(shè) 計(jì) 兩 個(gè) 按 鈕 和 一 個(gè) Label,當(dāng) 點(diǎn) 擊 “ show”按 鈕 時(shí) 顯 示 “ HelloQt!”,點(diǎn) 擊 “ Hide”按 鈕 時(shí) 隱 藏 “ HelloQt!”。 按 照 Hello t方 法 創(chuàng) 建 工 程 , 并 繪 制 界 面 。 添 加 功 能 : t使 用 信 號 和 槽 機(jī) 制 可 以 很 容 易 的 實(shí) 現(xiàn) 對 象 之 間 的 通 信 , 當(dāng) 某 些 事 件 發(fā) 生 時(shí) , 對 應(yīng) 的 信 號 會 被 發(fā) 送 ???以 將 一 個(gè) 對 象 的 信 號 和 其 他 對 象 的 槽 相 連 , 這 樣 , 當(dāng) 信 號 發(fā) 送
9、是 , 和 他 相 連 的 槽 函 數(shù) 即 可 被 調(diào) 用 。 編 輯 信 號 和 槽 : Edit-Edit signal/slots (F4)編 輯 對 象 : Edit-Edit idgets (F3)F4之 后 , 左 鍵 拖 動(dòng) “ Show”到 “ HelloQT”上 , 釋 放 鼠 標(biāo) , 會 彈 出信 號 和 槽 對 話 框 選 擇 連 接 clicked()信 號 和 show()槽 同 樣 的 方 法 連 接 “ Hide”的 clicked()信 號 和 “ HelloQt”的 show()槽 連 接 好 后 如 下 圖 示如 果 要 編 輯 部 件 , 按 F3回 到
10、部 件 編 輯 狀 態(tài) 即 可最 后 編 譯 運(yùn) 行 程 序 , 觀 察 現(xiàn) 象 練 習(xí) : 控 制 LCDNumber顯 示 通 過 slider(滑 塊 )和 dial(旋 鈕 )控 制 LCDNumber上 顯 示 的 數(shù) 字 Qt Creator編 譯 的 程 序 , 在 其 工 程 文 件 夾 下 會 有 一 個(gè) debug文 件 夾 ,其 中 有 程 序 的 .exe可 執(zhí) 行 文 件 。 但 Qt Creator默 認(rèn) 是 用 動(dòng) 態(tài) 鏈 接 的 ,就 是 可 執(zhí) 行 程 序 在 運(yùn) 行 時(shí) 需 要 相 應(yīng) 的 .dll文 件 。 我 們 點(diǎn) 擊 生 成 的 .exe文 件 ,
11、首 先 可 能 顯 示 “ 沒 有 找 到 mingwm10.dll, 因 此 這 個(gè) 應(yīng) 用 程 序未 能 啟 動(dòng) 。 重 新 安 裝 應(yīng) 用 程 序 可 能 會 修 復(fù) 此 問 題 。 ”表 示 缺 少mingwm10.dll文 件 。 解 決 這 個(gè) 問 題 我 們 可 以 將 相 應(yīng) 的 .dll文 件 放 到 系 統(tǒng) 中 。 在 Qt Creator的 安 裝 目 錄 的 qt文 件 下 的 bin文 件 夾 下 ( 比 如 安 裝 在 了 D盤 ,所 以 路 徑 是 D:Qt2009.04qtbin) , 可 以 找 到 所 有 的 相 關(guān) .dll文 件 。方 法 一 : 在 這
12、 里 找 到 mingwm10.dll文 件 , 將 其 復(fù) 制 到C:WINDOWSsystem文 件 夾 下 即 可 。 下 面 再 提 示 缺 少 什 么 dll文 件 ,都 像 這 樣 解 決 就 可 以 了 。 方 法 二 : 將 這 些 dll文 件 都 與 .exe文 件 放 到 同 一 個(gè) 文 件 夾 下 。 不 過這 樣 每 個(gè) .exe文 件 都 要 放 一 次 。方 法 三 : 將 D:Qt2009.04qtbin加 入 系 統(tǒng) Path環(huán) 境 變 量 。 右 擊我 的 電 腦 -屬 性 -高 級 -環(huán) 境 變 量 -在 系 統(tǒng) 變 量 列 表 中 找 到 Path,將
13、路 徑 加 入 其 中 即 可 。 用 純 源 碼 編 寫 :1.新 建 空 的 Qt工 程 。 2.工 程 名 為 hello world, 并 選 擇 工 程 保 存 路 徑 3.在 新 建 好 的 工 程 中 添 加 文 件 。 右 擊 工 程 文 件 夾 , 彈 出 的 菜 單 中 選擇 Add New。 4.選 擇 普 通 文 件 。 點(diǎn) 擊 Ok 5.文 件 名 為 main.cpp, 點(diǎn) 擊 Next進(jìn) 入 下 一 步 。 6.這 里 自 動(dòng) 將 這 個(gè) 文 件 添 加 到 了 新 建 的 工 程 中 。 保 持 默 認(rèn) 設(shè) 置 , 點(diǎn)擊 完 成 。 7.在 main.cpp文
14、件 中 添 加 代 碼 。 8.這 時(shí) 點(diǎn) 擊 運(yùn) 行 , 程 序 執(zhí) 行 了 , 但 看 不 到 效 果 , 因 為 程 序 里 什 么 也沒 做 。 我 們 點(diǎn) 擊 信 息 框 右 上 角 的 紅 色 方 塊 , 停 止 程 序 運(yùn) 行 。 9.我 們 再 更 改 代 碼 。 添 加 一 個(gè) 對 話 框 對 象 。 10.運(yùn) 行 效 果 如 下 。 11.我 們 更 改 代 碼 如 下 , 在 對 話 框 上 添 加 一 個(gè) 標(biāo) 簽 對 象 , 并 顯 示hello world。 12.運(yùn) 行 效 果 如 下 。 二 、 Qt Creator編 寫 多 窗 口 程 序?qū)?現(xiàn) 功 能 : 程
15、 序 開 始 出 現(xiàn) 一 個(gè) 對 話 框 , 按 下 按 鈕 后 便 能 進(jìn) 入 主 窗 口 ,如 果 直 接 關(guān) 閉 這 個(gè) 對 話 框 , 便 不 能 進(jìn) 入 主 窗 口 , 整 個(gè) 程 序 也 將 退 出 。當(dāng) 進(jìn) 入 主 窗 口 后 , 我 們 按 下 按 鈕 , 會 彈 出 一 個(gè) 對 話 框 , 無 論 如 何 關(guān)閉 這 個(gè) 對 話 框 , 都 會 回 到 主 窗 口 。實(shí) 現(xiàn) 原 理 : 程 序 里 我 們 先 建 立 一 個(gè) 主 工 程 , 作 為 主 界 面 , 然 后 再 建 立一 個(gè) 對 話 框 類 , 將 其 加 入 工 程 中 , 然 后 在 程 序 中 調(diào) 用 自
16、己 新 建 的 對話 框 類 來 實(shí) 現(xiàn) 多 窗 口 。 實(shí) 現(xiàn) 過 程 :1.首 先 新 建 Qt4 Gui Application工 程 , 工 程 名 為 nGui, Base class選 為 QWidget。 建 立 好 后 工 程 文 件 列 表 如 下 圖 。 2.新 建 對 話 框 類 , 如 下 圖 , 在 新 建 中 , 選 擇 Qt Designer Form Class。 3.選 擇 Dialog without Buttons。 4.類 名 設(shè) 為 myDlg。 5.點(diǎn) 擊 Finish完 成 。 注 意 這 里 已 經(jīng) 默 認(rèn) 將 其 加 入 到 了 我 們 剛 建
17、 的 工程 中 了 。 6.如 下 圖 , 在 mydlg.ui中 拖 入 一 個(gè) Push Button, 將 其 上 的 文 本 改為 “ 進(jìn) 入 主 窗 口 ” , 在 其 屬 性 窗 口 中 將 其 objectName改 為enterBtn(Push Button名 字 ), 在 下 面 的 Signals and slots editor中 進(jìn) 行 信 號 和 槽 的 關(guān) 聯(lián) , 其 中 , Sender設(shè) 為 enterBtn,Signal設(shè) 為 clicked(), Receive設(shè) 為 myDlg, Slot設(shè) 為 accept()。這 樣 就 實(shí) 現(xiàn) 了 單 擊 這 個(gè) 按
18、 鈕 使 這 個(gè) 對 話 框 關(guān) 閉 并 發(fā) 出 Accepted信 號的 功 能 。 下 面 我 們 將 利 用 這 個(gè) 信 號 。 7.修 改 主 函 數(shù) main.cpp, 如 下 :#include #include “widget.h”#include “mydlg.h” /加 入 頭 文 件int main(int argc, char *argv) QApplication a(argc, argv); Widget w; myDlg my1; /建 立 自 己 新 建 的 類 的 對 象 my1 if(my1.exec()=QDialog:Accepted) /利 用 Acce
19、pted信 號 判 斷enterBtn是 否 被 按 下 w.show(); /如 果 被 按 下 , 顯 示 主 窗 口 return a.exec(); /程 序 一 直 執(zhí) 行 , 直 到 主 窗 口 關(guān) 閉 else return 0; /如 果 沒 被 按 下 , 則 不 會 進(jìn) 入 主 窗 口 , 整 個(gè) 程 序結(jié) 束 運(yùn) 行主 函 數(shù) 必 須 這 么 寫 , 才 能 完 成 所 要 的 功 能 。 到 這 里 , 我 們 就 實(shí) 現(xiàn) 了 一 個(gè) 界 面 結(jié) 束 執(zhí) 行 , 然 后 彈 出 另 一 個(gè) 界 面 的程 序 。 下 面 我 們 在 主 窗 口 上 加 一 個(gè) 按 鈕 ,
20、 按 下 該 按 鈕 , 彈 出 一 個(gè) 對話 框 , 但 這 個(gè) 對 話 框 關(guān) 閉 , 不 會 使 主 窗 口 關(guān) 閉 。8.如 下 圖 , 在 主 窗 口 加 入 按 鈕 , 顯 示 文 本 為 “ 彈 出 一 個(gè) 對 話 框 ” ,在 其 上 點(diǎn) 擊 鼠 標(biāo) 右 鍵 , 在 彈 出 的 菜 單 中 選 擇 go to slot。 9.我 們 選 擇 單 擊 事 件 clicked()。 10.我 們 在 彈 出 的 槽 函 數(shù) 中 添 加 一 句 : my2.show(); my2為 我 們 新 建 對 話 框 類 的 另 一 個(gè) 對 象 , 但 是 my2我 們 還 沒 有 定 義
21、,所 以 在 widget.h文 件 中 添 加 相 應(yīng) 代 碼 , 如 下 , 先 加 入 頭 文 件 , 再 加入 my2的 定 義 語 句 , 這 里 我 們 將 其 放 到 private里 , 因 為 一 般 的 函 數(shù)都 放 在 public里 , 而 變 量 都 放 在 private里 。 #ifndef WIDGET_H#define WIDGET_H#include #include “mydlg.h” /包 含 頭 文 件namespace Uiclass Widget;class Widget : public QWidgetQ_OBJECTpublic:Widget(
22、QWidget *parent = 0);Widget();private: Ui:Widget *ui;myDlg my2; /對 my2進(jìn) 行 定 義private slots:void on_pushButton_clicked();#endif / WIDGET_H 到 這 里 , 再 運(yùn) 行 程 序 , 便 能 完 成 我 們 實(shí) 驗(yàn) 要 求 的 功 能 了 。 整 個(gè) 程 序里 , 我 們 用 兩 種 方 法 實(shí) 現(xiàn) 了 信 號 和 槽 函 數(shù) 的 關(guān) 聯(lián) , 第 一 個(gè) 按 鈕 我 們直 接 在 設(shè) 計(jì) 器 中 實(shí) 現(xiàn) 其 關(guān) 聯(lián) ; 第 二 個(gè) 按 鈕 我 們 自 己 寫 了
23、槽 函 數(shù) 語 句 ,其 實(shí) 圖 形 的 設(shè) 計(jì) 與 直 接 寫 代 碼 效 果 是 一 樣 的 。 三 、 Qt Creator登 錄 對 話 框?qū)?現(xiàn) 功 能 :在 彈 出 對 話 框 中 填 寫 用 戶 名 和 密 碼 , 按 下 登 錄 按 鈕 , 如 果 用 戶 名 和密 碼 均 正 確 則 進(jìn) 入 主 窗 口 , 如 果 有 錯(cuò) 則 彈 出 警 告 對 話 框 。實(shí) 現(xiàn) 原 理 :通 過 上 節(jié) 的 多 窗 口 原 理 實(shí) 現(xiàn) 由 登 錄 對 話 框 進(jìn) 入 主 窗 口 , 而 用 戶 名 和密 碼 可 以 用 if語 句 進(jìn) 行 判 斷 。 實(shí) 現(xiàn) 過 程 :1.先 新 建 Qt
24、4 Gui Application工 程 , 工 程 名 為 mainWidget, 選 用QWidget作 為 Base class, 這 樣 便 建 立 了 主 窗 口 。 文 件 列 表 如 下 : 2.然 后 新 建 一 個(gè) Qt Designer Form Class類 , 類 名 為 loginDlg, 選用 Dialog without Buttons, 將 其 加 入 上 面 的 工 程 中 。 文 件 列 表 如下 : 3.在 logindlg.ui中 設(shè) 計(jì) 下 面 的 界 面 : 行 輸 入 框 為 Line Edit。 其 中用 戶 名 后 面 的 輸 入 框 在 屬
25、性 中 設(shè) 置 其 object Name為 usrLineEdit,密 碼 后 面 的 輸 入 框 為 pwdLineEdit, 登 錄 按 鈕 為 loginBtn, 退 出 按鈕 為 exitBtn。 4.將 exitBtn的 單 擊 后 效 果 設(shè) 為 退 出 程 序 , 關(guān) 聯(lián) 如 下 : 5.右 擊 登 錄 按 鈕 選 擇 go to slot, 再 選 擇 clicked(),然 后 進(jìn) 入 其 單 擊 事件 的 槽 函 數(shù) , 寫 入 一 句 void loginDlg:on_loginBtn_clicked() accept(); 6.改 寫 main.cpp:#includ
26、e #include “widget.h”#include “l(fā)ogindlg.h”int main(int argc, char *argv) QApplication a(argc, argv); Widget w; loginDlg login; if(login.exec()=QDialog:Accepted) w.show(); return a.exec(); else return 0; 7.這 時(shí) 執(zhí) 行 程 序 , 可 實(shí) 現(xiàn) 按 下 登 錄 按 鈕 進(jìn) 入 主 窗 口 , 按 下 退 出 按 鈕 退 出 程 序 。8.添 加 用 戶 名 密 碼 判 斷 功 能 。 將 登
27、陸 按 鈕 的 槽 函 數(shù) 改 為 :void loginDlg:on_loginBtn_clicked()if (ui-usrLineEdit-text()=tr(“qt”)elseQMessageBox:warning(this,tr(“Warning”),tr(“user name or password error!”),QMessageBox:Yes);/如 果 不 正 確 , 彈 出 警 告 對 話 框并 在 logindlg.cpp中 加 入 #include 的 頭 文 件 。 如 果不 加 這 個(gè) 頭 文 件 , QMessageBox類 不 可 用 。 9.這 時(shí) 再 執(zhí)
28、行 程 序 , 輸 入 用 戶 名 為 qt, 密 碼 為 123456, 按 登 錄 按 鈕便 能 進(jìn) 入 主 窗 口 了 , 如 果 輸 入 錯(cuò) 了 , 就 會 彈 出 警 告 對 話 框 。 如 果 輸 入 錯(cuò) 誤 , 便 會 彈 出 警 告 提 示 框 : 10.在 logindlg.cpp的 loginDlg類 構(gòu) 造 函 數(shù) 里 , 添 上 初 始 化 語 句 , 使 密碼 顯 示 為 小 黑 點(diǎn) 。loginDlg:loginDlg(QWidget *parent) :QDialog(parent),ui(new Ui:loginDlg)ui-setupUi(this);ui-
29、pwdLineEdit- setEchoMode(QLineEdit:Password); 效 果 如 下 : 11.如 果 輸 入 如 下 圖 中 的 用 戶 名 , 在 用 戶 名 前 不 小 心 加 上 了 一 些 空 格 ,結(jié) 果 程 序 按 錯(cuò) 誤 的 用 戶 名 對 待 了 。 我 們 可 以 更 改 if判 斷 語 句 , 使 這 樣 的 輸 入 也 算 正 確 。void loginDlg:on_loginBtn_clicked()if(ui-usrLineEdit-text().trimmed()=tr(“ qt” )elseQMessageBox:warning(this,
30、tr(“ Warning” ),tr(“ user name or password error!” ),QMessageBox:Yes);加 入 的 這 個(gè) 函 數(shù) 的 作 用 就 是 移 除 字 符 串 開 頭 和 結(jié) 尾 的 空 白 字 符 。 12.最 后 , 如 果 輸 入 錯(cuò) 誤 了 , 重 新 回 到 登 錄 對 話 框 時(shí) , 我 們 希 望 可以 使 用 戶 名 和 密 碼 框 清 空 并 且 光 標(biāo) 自 動(dòng) 跳 轉(zhuǎn) 到 用 戶 名 輸 入 框 , 最 終的 登 錄 按 鈕 的 單 擊 事 件 的 槽 函 數(shù) 如 下 :void loginDlg:on_loginBtn_cl
31、icked()if(ui-usrLineEdit-text().trimmed()=tr(“qt”)elseQMessageBox:warning(this,tr(“Warning”),tr(“user name or password error!”),QMessageBox:Yes);/如 果 不 正 確 , 彈 出 警 告 對 話 框ui-usrLineEdit-clear();/清 空 用 戶 名 輸 入 框 ui-pwdLineEdit-clear();/清 空 密 碼 輸 入 框ui-usrLineEdit-setFocus();/將 光 標(biāo) 轉(zhuǎn) 到 用 戶 名 輸 入 框 最 終
32、 的 loginDlg.cpp文 件 如 下 圖 : 四 、 Qt Creator添 加 菜 單 圖 標(biāo)1.新 建 Qt4 Gui Application工 程 , 將 工 程 命 名 為 MainWindow, 其 他選 項(xiàng) 默 認(rèn) 即 可 。生 成 的 窗 口 界 面 如 下 圖 。 其 中 最 上 面 的 為 菜 單 欄 。 2.我 們 在 Type Here那 里 雙 擊 , 并 輸 入 “ 文 件 (這 樣 在 程 序 中 使 用 中 文 , 便 能 在 運(yùn) 行 時(shí) 顯 示 出 來 了 。 更 改 后 文 件 如下 圖 。 2.在 mainwindow.h文 件 中 的 privat
33、e下 加 入 以 下 語 句 。 bool isSaved; /為 true時(shí) 標(biāo) 志 文 件 已 經(jīng) 保 存 , 為 false時(shí) 標(biāo) 志 文 件 尚未 保 存 QString curFile; /保 存 當(dāng) 前 文 件 的 文 件 名 void do_file_New(); /新 建 文 件 void do_file_SaveOrNot(); /修 改 過 的 文 件 是 否 保 存 void do_file_Save(); /保 存 文 件 void do_file_SaveAs(); /文 件 另 存 為 bool saveFile(const QString /存 儲 文 件 這 些
34、 是 變 量 和 函 數(shù) 的 聲 明 。 其 中 isSaved變 量 起 到 標(biāo) 志 的 作 用 , 用它 來 標(biāo) 志 文 件 是 否 被 保 存 過 。 然 后 我 們 再 在 相 應(yīng) 的 源 文 件 里 進(jìn) 行 這些 函 數(shù) 的 定 義 。 3.在 mainwindow.cpp中 先 加 入 頭 文 件 #include , 然 后 在 構(gòu) 造 函數(shù) 里 添 加 以 下 幾 行 代 碼 。 isSaved = false; /初 始 化 文 件 為 未 保 存 過 狀 態(tài) curFile = tr(“ 未 命 名 .txt” ); /初 始 化 文 件 名 為 “ 未 命 名 .txt”
35、 setWindowTitle(curFile); /初 始 化 主 窗 口 的 標(biāo) 題 這 是 對 主 窗 口 進(jìn) 行 初 始 化 。 效 果 如 下 。 4.然 后 添 加 “ 新 建 ” 操 作 的 函 數(shù) 定 義 。 void MainWindow:do_file_New() /實(shí) 現(xiàn) 新 建 文 件 的 功 能 do_file_SaveOrNot(); isSaved = false; curFile = tr(“未 命 名 .txt”); setWindowTitle(curFile); ui-textEdit-clear(); /清 空 文 本 編 輯 器 ui-textEdit
36、-setVisible(true); /文 本 編 輯 器 可 見 新 建 文 件 , 先 要 判 斷 正 在 編 輯 的 文 件 是 否 需 要 保 存 。 然 后 將 新 建 的文 件 標(biāo) 志 為 未 保 存 過 狀 態(tài) 。 5.再 添 加 do_file_SaveOrNot函 數(shù) 的 定 義 。 void MainWindow:do_file_SaveOrNot() /彈 出 是 否 保 存 文 件 對 話 框 if(ui-textEdit-document()-isModified() /如 果 文 件 被 更 改 過 , 彈 出 保 存 對 話 框 QMessageBox box;b
37、ox.setWindowTitle(tr(“ 警 告 ” );box.setIcon(QMessageBox:Warning);box.setText(curFile + tr(” 尚 未 保 存 , 是 否 保 存 ? ” );box.setStandardButtons(QMessageBox:Yes | QMessageBox:No);if(box.exec() = QMessageBox:Yes) /如 果 選 擇 保 存 文 件 , 則 執(zhí) 行 保 存 操 作 do_file_Save(); 這 個(gè) 函 數(shù) 實(shí) 現(xiàn) 彈 出 一 個(gè) 對 話 框 , 詢 問 是 否 保 存 正 在 編
38、輯 的 文 件 。 6.再 添 加 “ 保 存 ” 操 作 的 函 數(shù) 定 義 。 void MainWindow:do_file_Save() /保 存 文 件 if(isSaved) /如 果 文 件 已 經(jīng) 被 保 存 過 , 直 接 保 存 文 件 saveFile(curFile);else do_file_SaveAs(); /如 果 文 件 是 第 一 次 保 存 , 那 么 調(diào) 用 另 存 為 對 文 件 進(jìn) 行 保 存 時(shí) , 先 判 斷 其 是 否 已 經(jīng) 被 保 存 過 , 如 果 沒 有 被 保 存過 , 就 要 先 對 其 進(jìn) 行 另 存 為 操 作 。 7.下 面
39、是 “ 另 存 為 ” 操 作 的 函 數(shù) 定 義 。 void MainWindow:do_file_SaveAs() /文 件 另 存 為 QString fileName = QFileDialog:getSaveFileName(this,tr(“ 另 存為 ” ),curFile); /獲 得 文 件 名 if(!fileName.isEmpty() /如 果 文 件 名 不 為 空 , 則 保 存 文 件 內(nèi)容 saveFile(fileName); 這 里 彈 出 一 個(gè) 文 件 對 話 框 , 顯 示 文 件 另 存 為 的 路 徑 。 8.下 面 是 實(shí) 際 文 件 存 儲
40、操 作 的 函 數(shù) 定 義 。 bool MainWindow:saveFile(const QString if(!file.open(QFile:WriteOnly | QFile:Text) /以 只 寫 方 式 打 開 文 件 , 如 果 打 開 失 敗 則 彈 出 提 示 框 并 返 回 QMessageBox:warning(this,tr(“ 保 存 文 件 ” ), tr(“ 無 法 保 存 文 件 %1:n %2 ).arg(fileName).arg(file.errorString(); return false; /%1,%2表 示 后 面 的 兩 個(gè) arg參 數(shù) 的
41、 值 QTextStream out( /新 建 流 對 象 , 指 向 選 定 的 文 件 out textEdit-toPlainText(); /將 文 本 編 輯 器 里 的 內(nèi) 容 以 純 文 本 的 形 式 輸 出 到 流 對 象 中 isSaved = true; curFile = QFileInfo(fileName).canonicalFilePath(); /獲 得 文 件 的 標(biāo) 準(zhǔn) 路 徑 setWindowTitle(curFile); /將 窗 口 名 稱 改 為 現(xiàn) 在 窗 口 的 路 徑 return true; 這 個(gè) 函 數(shù) 實(shí) 現(xiàn) 將 文 本 文 件 進(jìn)
42、 行 存 儲 。 下 面 我 們 對 其 中 的 一 些 代 碼 進(jìn)行 講 解 。 QFile file(fileName);一 句 , 定 義 了 一 個(gè) QFile類 的 對 象 file, 其中 filename表 明 這 個(gè) 文 件 就 是 我 們 保 存 的 的 文 件 。 然 后 我 們 就 可 以用 file代 替 這 個(gè) 文 件 , 來 進(jìn) 行 一 些 操 作 。 Qt中 文 件 的 操 作 和 C, C+很 相 似 。 對 于 QFile類 對 象 怎 么 使 用 , 我 們 可 以 查 看 幫 助 。點(diǎn) 擊 Qt Creator最 左 側(cè) 的 Help, 在 其 中 輸 入
43、 QFile, 在 搜 索 到 的 列表 中 選 擇 QFile即 可 。 這 時(shí) 在 右 側(cè) 會 顯 示 出 QFile類 中 所 有 相 關(guān) 信 息以 及 他 們 的 用 法 和 說 明 。 我 們 往 下 拉 , 會 發(fā) 現(xiàn) 下 面 有 關(guān) 于 怎 么 讀 取 文 件 的 示 例 代 碼 。 再 往 下 便 能 看 到 用 QTextStream類 對 象 , 進(jìn) 行 字 符 串 輸 入 的 例 子 。下 面 也 提 到 了 QFileInfo和 QDir等 相 關(guān) 的 類 , 我 們 可 以 點(diǎn) 擊 它 們 去看 一 下 具 體 的 使 用 說 明 。 上 面 只 是 做 了 一 個(gè)
44、簡 單 的 說 明 。 以 后 我 們 對 自 己 不 明 白 的 類 都 可 以去 幫 助 里 進(jìn) 行 查 找 , 這 也 許 是 我 們 以 后 要 做 的 最 多 的 一 件 事 了 。 對于 其 中 的 英 文 解 釋 , 我 們 最 好 想 辦 法 弄 明 白 它 的 大 意 , 其 實(shí) 網(wǎng) 上 也有 一 些 中 文 的 翻 譯 , 但 最 好 還 是 從 一 開 始 就 嘗 試 著 看 英 文 原 版 的 幫助 , 這 樣 以 后 才 不 會 對 中 文 翻 譯 產(chǎn) 生 依 賴 。 9.雙 擊 mainwindow.ui文 件 , 在 圖 形 界 面 窗 口 下 面 的 Actio
45、n Editor動(dòng) 作 編 輯 器 里 , 我 們 右 擊 “ 新 建 ” 菜 單 一 條 , 選 擇 Go to slot, 然后 選 擇 triggered( ) , 進(jìn) 入 其 觸 發(fā) 事 件 槽 函 數(shù) 。 同 理 , 進(jìn) 入 其 他 兩 個(gè) 菜 單 的 槽 函 數(shù) , 將 相 應(yīng) 的 操 作 的 函 數(shù) 寫 入 槽 函數(shù) 中 。 如 下 。 void MainWindow:on_action_New_triggered() /信 號 和 槽 的 關(guān) 聯(lián) do_file_New(); void MainWindow:on_action_Save_triggered() do_file_
46、Save(); void MainWindow:on_action_SaveAs_triggered() do_file_SaveAs(); 最 終 的 mainwindow.cpp文 件 如 下 。 最 終 的 mainwindow.h文 件 如 下 。 這 時(shí) 點(diǎn) 擊 運(yùn) 行 , 就 能 夠 實(shí) 現(xiàn) 新 建 文 件 , 保 存 文 件 , 文 件 另 存 為 的 功 能 了 。 實(shí) 現(xiàn) 打 開 , 關(guān) 閉 , 退 出 , 撤 銷 , 復(fù) 制 , 剪 切 , 粘 貼 的 功 能 。 先 備 份 上 次 的 工 程 文 件 , 然 后 再 將 其 打 開 。 1.先 在 mainwindow.
47、h文 件 中 加 入 函 數(shù) 的 聲 明 。 void do_file_Open(); /打 開 文 件 bool do_file_Load(const QString /讀 取 文 件 2.再 在 mainwindow.cpp文 件 中 寫 函 數(shù) 的 功 能 實(shí) 現(xiàn) 。 void MainWindow:do_file_Open()/打 開 文 件 do_file_SaveOrNot();/是 否 需 要 保 存 現(xiàn) 有 文 件 QString fileName = QFileDialog:getOpenFileName(this); /獲 得 要 打 開 的 文 件 的 名 字 if(!f
48、ileName.isEmpty()/如 果 文 件 名 不 為 空 do_file_Load(fileName); ui-textEdit-setVisible(true);/文 本 編 輯 器 可 見 bool MainWindow:do_file_Load(const QString if(!file.open(QFile:ReadOnly | QFile:Text) QMessageBox:warning(this,tr(“ 讀 取 文 件 ” ),tr(“ 無 法 讀 取 文 件 %1:n%2.” ).arg(fileName).arg(file.errorString(); retu
49、rn false; /如 果 打 開 文 件 失 敗 , 彈 出 對 話 框 , 并 返 回 QTextStream in( ui-textEdit-setText(in.readAll(); /將 文 件 中 的 所 有 內(nèi) 容 都 寫 到 文 本 編 輯 器 中 curFile = QFileInfo(fileName).canonicalFilePath(); setWindowTitle(curFile); return true; 上 面 的 打 開 文 件 函 數(shù) 與 文 件 另 存 為 函 數(shù) 相 似 , 讀 取 文 件 的 函 數(shù) 與文 件 存 儲 函 數(shù) 相 似 。 3.然
50、后 按 順 序 加 入 更 菜 單 的 關(guān) 聯(lián) 函 數(shù) , 如 下 。 void MainWindow:on_action_Open_triggered() /打 開 操 作 do_file_Open(); / void MainWindow:on_action_Close_triggered() /關(guān) 閉 操 作 do_file_SaveOrNot(); ui-textEdit-setVisible(false); / void MainWindow:on_action_Quit_triggered() /退 出 操 作 on_action_Close_triggered(); /先 執(zhí) 行
51、 關(guān) 閉 操 作 qApp-quit(); /再 退 出 系 統(tǒng) , qApp是 指 向 應(yīng) 用 程 序 的 全 局 指 針 / void MainWindow:on_action_Undo_triggered() /撤 銷 操 作 ui-textEdit-undo(); / void MainWindow:on_action_Cut_triggered() /剪 切 操 作 ui-textEdit-cut(); / void MainWindow:on_action_Copy_triggered() /復(fù) 制 操 作 ui-textEdit-copy(); / void MainWindow
52、:on_action_Past_triggered() /粘 貼 操 作 ui-textEdit-paste(); 因 為 復(fù) 制 , 撤 銷 , 全 選 , 粘 貼 , 剪 切 等 功 能 , 是 TextEdit默 認(rèn)就 有 的 , 所 以 我 們 只 需 調(diào) 用 一 下 相 應(yīng) 函 數(shù) 就 行 。 到 這 里 , 除 了查 找 和 幫 助 兩 個(gè) 菜 單 的 功 能 沒 有 加 上 以 外 , 其 他 功 能 都 已 經(jīng) 實(shí)現(xiàn) 了 。 七 、 Qt Creator實(shí) 現(xiàn) 文 本 查 找以 前 都 用 設(shè) 計(jì) 器 設(shè) 計(jì) 界 面 , 而 這 次 我 們 用 代 碼 實(shí) 現(xiàn) 一 個(gè) 簡 單
53、的 查 找對 話 框 。 對 于 怎 么 實(shí) 現(xiàn) 查 找 功 能 的 , 我 們 詳 細(xì) 地 分 步 說 明 了 怎 么 進(jìn)行 類 中 方 法 的 查 找 和 使 用 。 其 中 也 將 Qt Creator智 能 化 的 代 碼 補(bǔ) 全功 能 和 程 序 中 函 數(shù) 的 聲 明 位 置 和 定 義 位 置 間 的 快 速 切 換 進(jìn) 行 了 介 紹 。1.首 先 還 是 保 存 以 前 的 工 程 , 然 后 再 將 其 打 開 。我 們 發(fā) 現(xiàn) Qt Creator默 認(rèn) 的 字 體 有 點(diǎn) 小 , 可 以 按 下 Ctrl鍵 的 同 時(shí) 按 兩下 +鍵 , 來 放 大 字 體 。 也 可
54、 以 選 擇 Edit-Advanced-Increase Font Size。 2.在 mainwindow.h中 加 入 #include 的 頭 文 件 包 含 , 在private中 添 加QLineEdit *find_textLineEdit; /聲 明 一 個(gè) 行 編 輯 器 , 用 于 輸 入要 查 找 的 內(nèi) 容在 private slots中 添 加void show_findText();在 該 函 數(shù) 中 實(shí) 現(xiàn) 查 找 字 符 串 的 功 能 。 3.我 們 進(jìn) 入 查 找 菜 單 的 觸 發(fā) 事 件 槽 函 數(shù) , 更 改 如 下 。void MainWindow:
55、on_action_Find_triggered()QDialog *findDlg = new QDialog(this);/新 建 一 個(gè) 對 話 框 , 用 于 查 找 操 作 , this表 明 它 的 父 窗 口 是 MainWindow。findDlg-setWindowTitle(tr(“ 查 找 ” );/設(shè) 置 對 話 框 的 標(biāo) 題find_textLineEdit = new QLineEdit(findDlg);/將 行 編 輯 器 加 入 到 新 建 的 查 找 對 話 框 中QPushButton *find_Btn = new QPushButton(tr(“ 查
56、 找 下 一 個(gè) ” ),findDlg);/加 入 一 個(gè) “ 查 找 下 一 個(gè) ” 的 按 鈕QVBoxLayout* layout = new QVBoxLayout(findDlg);layout-addWidget(find_textLineEdit);layout-addWidget(find_Btn);/新 建 一 個(gè) 垂 直 布 局 管 理 器 , 并 將 行 編 輯 器 和 按 鈕 加 入 其 中 findDlg -show();/顯 示 對 話 框connect(find_Btn,SIGNAL(clicked(),this,SLOT(show_findText();/設(shè)
57、置 “ 查 找 下 一 個(gè) ” 按 鈕 的 單 擊 事 件 和 其 槽 函 數(shù) 的 關(guān) 聯(lián) 4.這 里 我 們 直 接 用 代 碼 生 成 了 一 個(gè) 對 話 框 , 其 中 一 個(gè) 行 編 輯 器 可 以輸 入 要 查 找 的 字 符 , 一 個(gè) 按 鈕 可 以 進(jìn) 行 查 找 操 作 。 我 們 將 這 兩 個(gè) 部件 放 到 了 一 個(gè) 垂 直 布 局 管 理 器 中 。 然 后 顯 示 這 個(gè) 對 話 框 。 并 設(shè) 置 了那 個(gè) 按 鈕 單 擊 事 件 與 show_findText()函 數(shù) 的 關(guān) 聯(lián) 。 5.下 面 我 們 開 始 寫 實(shí) 現(xiàn) 查 找 功 能 的 show_fin
58、dText()函 數(shù) 。void MainWindow:show_findText()/“ 查 找 下 一 個(gè) ” 按 鈕 的 槽 函數(shù)QString findText = find_textLineEdit-text();/獲 取 行 編 輯 器 中 的 內(nèi) 容先 用 一 個(gè) QString類 的 對 象 獲 得 要 查 找 的 字 符 。 然 后 我 們 一 步 一 步寫 查 找 操 作 的 語 句 。 6.在 下 一 行 寫 下 ui, 然 后 直 接 按 下 鍵 盤 上 的 “ ” 或 “ .” , 因 為 ui是 指 針 對象 , 所 以 自 動(dòng) 生 成 “ -” 號 , 而 且 彈
59、 出 了 ui中 的 所 有 部 件 名 稱 的 列表 。 如 下 圖 。 7.我 們 用 向 下 的 方 向 鍵 選 中 列 表 中 的 textEdit。 或 者 我 們 可 以 先 輸入 text, 這 時(shí) 能 縮 減 列 表 的 內(nèi) 容 。 8.如 上 圖 我 們 將 鼠 標(biāo) 放 到 textEdit上 , 這 時(shí) 便 出 現(xiàn) 了 textEdit的 類名 信 息 , 且 后 面 出 現(xiàn) 一 個(gè) F1按 鍵 。 我 們 按 下 鍵 盤 上 的 F1, 便 能 出 現(xiàn)textEdit的 幫 助 。 9.我 們 在 幫 助 中 向 下 拉 , 會 發(fā) 現(xiàn) 這 里 有 一 個(gè) find函 數(shù)
60、 。 10.我 們 點(diǎn) 擊 find, 查 看 其 詳 細(xì) 說 明 。 11.可 以 看 到 find函 數(shù) 可 以 實(shí) 現(xiàn) 文 本 編 輯 器 中 字 符 串 的 查 找 。 其 中有 一 個(gè) FindFlags的 參 數(shù) , 我 們 點(diǎn) 擊 它 查 看 其 說 明 。 12.可 以 看 到 它 是 一 個(gè) 枚 舉 變 量 ( enum) , 有 三 個(gè) 選 項(xiàng) , 第 一 項(xiàng) 是向 后 查 找 ( 即 查 找 光 標(biāo) 以 前 的 內(nèi) 容 , 這 里 的 前 后 是 相 對 的 說 法 , 比如 第 一 行 已 經(jīng) 用 完 了 , 光 標(biāo) 在 第 二 行 時(shí) , 把 第 一 行 叫 做 向
61、后 。 ) ,第 二 項(xiàng) 是 區(qū) 分 大 小 寫 查 找 , 第 三 項(xiàng) 是 查 找 全 部 。13.我 們 選 用 第 一 項(xiàng) , 然 后 寫 出 下 面 的 語 句 。ui-textEdit-find(findText,QTextDocument:FindBackward); 當(dāng) 寫 完 函 數(shù) 名 和 第 一 個(gè) “ ( ” 后 , 系 統(tǒng) 會 自 動(dòng) 顯 示 出 該 函 數(shù) 的 函 數(shù)原 型 , 這 樣 可 以 使 我 們 減 少 出 錯(cuò) 。 14.這 時(shí) 已 經(jīng) 能 實(shí) 現(xiàn) 查 找 的 功 能 了 。 但 是 我 們 剛 才 看 到 find的 返 回值 類 型 是 bool型 ,
62、而 且 , 我 們 也 應(yīng) 該 為 查 找 不 到 字 符 串 作 出 提 示 。if(!ui-textEdit -find(findText,QTextDocument:FindBackward)QMessageBox:warning(this,tr(“ 查 找 ” ),tr(“ 找 不 到 %1 ).arg(findText);因 為 查 找 失 敗 返 回 值 是 false, 所 以 if條 件 加 了 “ ! ” 號 。 在 找 不 到時(shí) 彈 出 警 告 對 話 框 。 15.到 這 里 , 查 找 功 能 就 基 本 上 寫 完 了 。 show_findText()函 數(shù) 的 內(nèi)
63、容 如 下 。 我 們 會 發(fā) 現(xiàn) 隨 著 程 序 功 能 的 增 強(qiáng) , 其 中 的 函 數(shù) 也 會 越 來 越 多 , 我 們都 會 為 查 找 某 個(gè) 函 數(shù) 的 定 義 位 置 感 到 頭 疼 。 而 在 Qt Creator中 有 幾種 快 速 定 位 函 數(shù) 的 方 法 , 我 們 這 里 講 解 三 種 。第 一 , 在 函 數(shù) 聲 明 的 地 方 直 接 跳 轉(zhuǎn) 到 函 數(shù) 定 義 的 地 方 。如 在 do_file_Load上 點(diǎn) 擊 鼠 標(biāo) 右 鍵 , 在 彈 出 的 菜 單 中 選 擇 Follow Symbol under Cursor或 者 下 面 的 Switch
64、 between Method Declaration/Definition。 第 二 , 快 速 查 找 一 個(gè) 文 件 里 的 所 有 函 數(shù) 。我 們 可 以 點(diǎn) 擊 窗 口 最 上 面 的 下 拉 框 , 這 里 會 顯 示 本 文 件 中 所 有 函 數(shù)的 列 表 。 第 三 , 利 用 查 找 功 能 。1.我 們 先 將 鼠 標(biāo) 定 位 到 一 個(gè) 函 數(shù) 名 上 。2.然 后 選 擇 Edit-Find/Replace-Find Dialog。3.這 時(shí) 會 出 現(xiàn) 一 個(gè) 查 找 對 話 框 , 可 以 看 到 要 查 找 的 函 數(shù) 名 已 經(jīng) 寫 在里 面 了 。 4.當(dāng)
65、 我 們 按 下 Search按 鈕 后 , 會 在 查 找 結(jié) 果 窗 口 顯 示 查 找 到 的 結(jié) 果 。 5.我 們 點(diǎn) 擊 第 二 個(gè) 文 件 。 會 發(fā) 現(xiàn) 在 這 個(gè) 文 件 中 有 兩 處 關(guān) 鍵 字 是 高 亮顯 示 。 6.我 們 雙 擊 第 二 項(xiàng) , 就 會 自 動(dòng) 跳 轉(zhuǎn) 到 函 數(shù) 的 定 義 處 。 八 、 Qt Creator實(shí) 現(xiàn) 狀 態(tài) 欄 顯 示1.我 們 在 mainwindow.h中 做 一 下 更 改 。加 入 頭 文 件 包 含 : #include 加 入 私 有 變 量 和 函 數(shù) :QLabel* first_statusLabel; /聲
66、明 兩 個(gè) 標(biāo) 簽 對 象 , 用 于 顯 示 狀 態(tài) 信 息QLabel* second_statusLabel;void init_statusBar(); /初 始 化 狀 態(tài) 欄加 入 一 個(gè) 槽 函 數(shù) 聲 明 : void do_cursorChanged(); /獲 取 光 標(biāo) 位 置 信息 2.在 mainwindow.cpp中 加 入 狀 態(tài) 欄 初 始 化 函 數(shù) 的 定 義 。void MainWindow:init_statusBar()QStatusBar* bar = ui-statusBar; /獲 取 狀 態(tài) 欄first_statusLabel = new QLabel; /新 建 標(biāo) 簽first_statusLabel-setMinimumSize(150,20); /設(shè) 置 標(biāo) 簽 最 小 尺 寸first_statusLabel-setFrameShape(QFrame:WinPanel); /設(shè) 置 標(biāo) 簽 形 狀first_statusLabel-setFrameShadow(QFrame:Sunken); /設(shè) 置 標(biāo) 簽 陰 影seco
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)信息系統(tǒng)設(shè)計(jì)方案(英文版)課件
- 技術(shù)支持考試培訓(xùn)講座課件
- 《電與我們的生活》課件
- xmind簡單實(shí)用教程..
- 蘇教版科學(xué)四下我們來養(yǎng)蠶課件
- 分光光度法及分光光度計(jì)使用方法課件
- 蒸汽的力量--課件
- 創(chuàng)意漸變微信社群營銷策劃方案PPT模板課件
- 藥店員工用藥知識培訓(xùn)課件
- 胸膜疾病影像表現(xiàn)課件
- 數(shù)學(xué)ppt課件滬教版版八年級下冊專題3-平行四邊形常用輔助線的添法
- 氧供需平衡的監(jiān)控ppt課件
- 小學(xué)小升初英語名詞復(fù)習(xí)課件
- 儀容儀表儀態(tài)培訓(xùn)資料
- 《認(rèn)識鐘表》復(fù)習(xí)課ppt課件