Qt5.9.1 簡單字體設計(UI設計)

最近自學了下Qt,本節講一下如何進行些簡單的字體設計,有什麼問題互相交流。

步驟如下:
一:創建一個Widget Application項目samp1,在創建窗體時選擇基類QDialog,生成的類命名爲QWDialog,並選擇生成窗體。

二:佈局

雙擊qwdialog.ui,進入界面設計(左側有工具)

(1)需要一個PlainText Edit( Iput Widgets裏),在Button裏的三個check Box(可同時多選),三個Radio Button(多選一),三個Push Button(普通按鈕)

                                                                         各個組件的相關設置

 
對象名 類名稱 屬性設置 備註
plaintextEdit  QPlainTextEdit Text="Hello, World
It is my demo. "
Font.PointSize=20
用於顯示文字內容,可編輯
CheckBoxUnder  QCheckBox  Text="Underline" 設置字體爲下劃線
QCheckBox Italic  QCheckBox  Text="Italic" 設置字體爲斜體
CheckBox Bold  QCheckBox  Text="Bold" 設置字體爲粗體
rBtnBlack  QRadioButton  Text="Black" 字體顏色爲黑色
rBtnRed  QRadioButton  Text="Red" 字體顏色爲紅色
rBtnBlue  QRadioButton  Text="Blue" 字體顏色爲藍色
btnOK  QPushButton  Text="確定" 返回確定,並關閉窗口
btnCancel  QPushButton  Text="取消"  返回取消,並關閉窗口
btnClose  QPushButton  Text="退出" 退出程序
QWDialog  QWDialog  windowTitle="Dialog by Designer" 界面窗口的類名稱是QWDialog,objectName 不要修改

(2)按住"Ctrl"鍵選中三個checkBox組件,鼠標右擊->Layout->Lay out Horizontally(水平佈局);

依次將選中三個RadioButton組件爲一組,水平佈局;再拖兩個Horizontal Layout(水平分隔的空格),將他們與界面上的三個PushBotton組件選中爲一組,水平佈局。

三. 設計程序功能

(1)字體樣式設置

窗體在設計模式下,選中 checkBoxUnder 組件,單擊右鍵調出其快捷菜單。在快捷菜單中單擊菜單項“Go to slot…”(中文狀態爲“轉到槽”),出現如圖所示的對話框。 

該對話框列出了 QCheckBox 類的所有信號,第一個是 clicked(),第二個是帶一個布爾類型參數的 clicked(bool)。

選擇 clicked(bool),然後單擊“OK”按鈕,在 QWDialog 的類定義中,會在 private slots 部分自動增加一個槽函數聲明,函數名是根據發射對象及其信號名稱自動命名的。

 void on_checkBoxUnder_clicked(bool checked);

 同時,在 qwdialog.cpp 文件中自動添加了函數 on_chkBoxUnder_clicked(bool) 的框架,在此函數中添加如下的代碼,實現文本框字體下劃線的控制。

void QWDialog::on_checkBoxUnder_clicked(bool checked)

{

    QFont font=ui->plainTextEdit->font();

    font.setUnderline(checked);

    ui->plainTextEdit->setFont(font);

}

 以同樣的方法爲 Italic 和 Bold 兩個 CheckBox設計槽函數,編譯後運行.

 

發現已經實現了修改字體的下劃線、斜體、粗體屬性的功能,說明信號與槽函數已經關聯了。

(2)字體顏色設置

 設置字體的 3 個 RadioButton 是互斥性選擇的,即一次只有一個 RadioButton 被選中,雖然也可以採用可視化設計的方式設計其 clicked() 信號的槽函數,但是這樣就需要生成 3 個槽函數。這裏可以簡化設計,即設計一個槽函數,將 3 個 RadioButton 的 clicked() 信號關聯到這一個槽函數。

爲此,在 QWDialog 類的 private slots 部分增加一個槽函數定義如下:

void setTextFontColor();

提示 將鼠標光標移動到這個函數的函數名上面,單擊右鍵,在彈出的快捷菜單中選擇“Refactor”→“Add Definition in qwdialog.cpp”,就可以在 qwdialog.cpp 文件中自動爲函數 setTextFontColor() 生成一個函數框架。

在 qwdialog.cpp 文件中,爲 setTextFontColor() 編寫實現代碼如下:

void QWDialog::setTextFontColor()

{

    QPalette plet=ui->plainTextEdit->palette();

    if(ui->rBtnBlue->isChecked())

        plet.setColor(QPalette::Text,Qt::blue);

    else if (ui->rBtnBlack->isChecked())

        plet.setColor(QPalette::Text,Qt::black);

    else if(ui->rBtnRed->isChecked())

        plet.setColor(QPalette::Text,Qt::red);

    else

        plet.setColor(QPalette::Text,Qt::black);

    ui->plainTextEdit->setPalette(plet);

}

由於這個槽函數是自定義的,所以不會自動與 RadioButton 的 clicked() 事件關聯,此時編譯後運行程序不會實現改變字體顏色的功能。需要在 QWDialog 的構造函數中手工進行關聯,代碼如下:

紅色框內爲添加的代碼。編譯後運行。

(3)三個按鈕的功能設計

界面上還有“確定”“取消”“退出”3 個按鈕,這是在對話框中常見的按鈕。“確定”表示確認選擇並關閉對話框,“取消”表示取消選擇並關閉對話框,“退出”則直接關閉對話框。

QWDialog 是從 QDialog 繼承而來的,QDialog 提供了 accept()、reject()、close() 等槽函數來表示這三種狀態,只需將按鈕的 clicked() 信號與相應槽函數關聯即可。

下面採用可視化的方式,將按鈕的 clicked() 信號與這些槽函數關聯起來。在 UI 設計器裏,單擊上方工具欄裏的“Edit Signals/Slots”按鈕,窗體進入信號與槽函數編輯狀態。

 點擊Signal&Solts Editor的“+”,添加信號與槽的關聯,按下圖設置(雙擊即可選擇對應的Sender):

 

四:編譯運行

 

這個實例程序的功能全部完成了。採用 UI 設計器設計了窗體界面,採用可視化和程序化的方式設計槽函數,設計信號與槽函數之間的關聯。

從以上的設計過程可以看到,Qt Creator 和 UI 設計器爲設計應用程序提供了強大的可視化設計功能。下一節說下代碼化UI設計。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章