Qt小部件基礎(chǔ)教程(三):記事本頭文件項(xiàng)目代碼
Qt是目前最先進(jìn)、最完整的跨平臺C++開發(fā)工具。它不僅完全實(shí)現(xiàn)了一次編寫,所有平臺無差別運(yùn)行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運(yùn)用于超過70個(gè)行業(yè)、數(shù)千家企業(yè),支持?jǐn)?shù)百萬設(shè)備及應(yīng)用。
記事本頭文件
該向?qū)镹otepad類生成了一個(gè)頭文件,該頭文件具有必要的#include,構(gòu)造函數(shù),析構(gòu)函數(shù)和Ui對象。該文件如下所示:
#includenamespace Ui { class Notepad; } class Notepad : public QMainWindow { Q_OBJECT public: explicit Notepad(QWidget *parent = nullptr); ~Notepad(); private slots: void newDocument(); void open(); void save(); void saveAs(); void print(); void exit(); void copy(); void cut(); void paste(); void undo(); void redo(); void selectFont(); void setFontBold(bool bold); void setFontUnderline(bool underline); void setFontItalic(bool italic); void about(); private: Ui::Notepad *ui; QString currentFile; };
以下行包括QMainWindow,它提供一個(gè)主應(yīng)用程序窗口:
#include < QMainWindow >
以下各行在Ui名稱空間中聲明Notepad類,該名稱空間是該uic工具從.ui文件生成的UI類的標(biāo)準(zhǔn)名稱空間:
namespace Ui { class Notepad; }
類聲明包含Q_OBJECT宏。它必須在類定義中排在首位,并將我們的類聲明為QObject。自然,它還必須繼承自QObject。一個(gè)QObject中增加了一些能力,以一個(gè)普通的C ++類。值得注意的是,類名稱和插槽名稱可以在運(yùn)行時(shí)查詢。也可以查詢插槽的參數(shù)類型并調(diào)用它。
class Notepad : public QMainWindow { Q_OBJECT
以下幾行聲明了一個(gè)構(gòu)造函數(shù),該構(gòu)造函數(shù)的默認(rèn)參數(shù)為parent。值0表示該窗口小部件沒有父級(它是頂級窗口小部件)。
public: explicit Notepad(QWidget *parent = nullptr);
以下行聲明了一個(gè)虛擬析構(gòu)函數(shù),以釋放對象在其生命周期中獲取的資源。根據(jù)C ++命名約定,析構(gòu)函數(shù)與其關(guān)聯(lián)的類具有相同的名稱,并以波浪號(?)為前綴。在QObject中,析構(gòu)函數(shù)是虛擬的,以確保當(dāng)通過指向基類的指針刪除對象時(shí),派生類的析構(gòu)函數(shù)被正確調(diào)用。
~Notepad();
以下各行聲明一個(gè)成員變量,該變量是指向記事本UI類的指針。成員變量與特定的類相關(guān)聯(lián),并且可用于其所有方法。
private: Ui::Notepad *ui; QString currentFile;