使用Qt設計師實現對話方塊

2021-07-09 23:27:15 字數 1686 閱讀 1524

初學qt,這兩天在整對話方塊。

qt實現對話方塊有兩種方式,一是純**形式,這種方法還是比較麻煩的;二是使用qt設計師來快速建立對話方塊,這種方法可以通過拖拽控制項來快速實現對話方塊。這裡簡要記錄一下通過qt設計師實現對話方塊。

首先通過qt設計師設計好對話方塊,儲存之後會生成乙個dlg.ui檔案,載入到工程的form files,單獨編譯,會在工程的generatedfiles資料夾下生成ui_dlg.h檔案,這個標頭檔案將對話方塊類封裝在了命名空間中,一般命名空間為ui,我們可以直接使用這個被封裝在ui命名空間的對話方塊類,也可以繼承這個類並實現一些新的工程。

1.如果直接使用這個對話方塊類,可以在需要彈出對話方塊的地方新增下面的**:

ui::webaddressdlg ui;

qdialog * dlg = new qdialog;

ui.setupui(dlg);

dlg->show();

2.如果需要繼承這個對話方塊類,建立dlg.h和dlg.cpp,**分別是:

.h檔案

#ifndef webaddressdlg_h

#define webaddressdlg_h

#include #include "ui_webaddressdlg.h"

class webaddressdlg : public qdialog,public ui::webaddressdlg

;#endif

.cpp檔案

#include #include "webaddressdlg.h"

webaddressdlg::webaddressdlg(qwidget * parent /* = 0 */)

:qdialog(parent)

void webaddressdlg::okbuttonclicked()

qstring webaddressdlg::getlineeditname()

qstring webaddressdlg::getlineeditwebside()

這裡注意,如果使用

setupui(this);
那麼在標頭檔案中不必新增

ui_webaddressdlg _ui;
而如果在建構函式中使用

_ui.setupui(this);
那麼在標頭檔案中需要新增:

ui_webaddressdlg _ui;

在需要彈出對話方塊的地方,新增一下**:

這裡mpwebaddressdlg是webaddressdlg物件,如果在另乙個對話方塊類中呼叫剛才定義的webaddressdlg物件,該物件一定要定義成全域性的,如果直接在乙個函式中定義的話,跳出函式對話方塊就直接被析構了,壓根看不到對話方塊,這裡今天排查了很久。

另外,如果我們需要判斷是否按下了對話方塊上的ok按鈕,可以這樣實現:

mpwebaddressdlg->show();

if(mpwebaddressdlg->exec() == qdialog::accepted) // 利用accepted返回值判斷按鈕是否被按下

else

Qt 對話方塊

1.qt 中使用qdialog 類實現對話方塊。就像主視窗一樣,我們通常會設計乙個類繼承 qdialog qdialog 及其子類,以及所有 qt dialog 型別的類 的對於其 parent 指標都有額外的解釋 如果 parent 為null 則該對話方塊會作為乙個頂層視窗,否則則作為其父元件的...

Qt 對話方塊

1.qdialog 類是對話方塊視窗的基類。對話方塊視窗是乙個頂級視窗,通常用作短期任務,或 者是與使用者的簡短會話等場合。2.對話方塊可以分為模態對話方塊和非模態對話方塊。所謂模態對話方塊就是在其沒有被關閉之前,使用者不能與同乙個應用程式的其他視窗進行互動,直到該對話方塊關閉。奪取焦點 對於非模態...

qt 對話方塊

對話方塊分為模態和非模態 1 模態對話方塊就是在其沒有被關閉之前,使用者不能與同乙個應用程式的其他視窗進行互動,直到該對話方塊關閉。this setmodal true 2 非模態對話方塊,當被開啟時,使用者既可選擇和該對話方塊進行互動,也可以選擇同應用程式的其他窗 互。this setmodal ...