如何自學qt(4)——對話方塊
1,觸發對話方塊
在qt中,對話方塊分成兩種
一種是模態對話方塊,簡單的說,就是點開後無法忽視它,必須要關閉才能操作其他視窗
【如果強制操作會發出duang的聲音】
另一種是非模態對話方塊,跟上面那個相反,是一個無所謂的對話方塊。
具體的話……
先在ui裡建立兩個觸發
一個叫new,一個叫open
用new觸發模態對話方塊的生成,程式碼如下
connect(ui->actionnew,&QAction::triggered,[=](){
//對話方塊分類
//模態對話方塊(不可以對其他對話方塊操作),非模態(可以)
//模態建立 阻塞
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec();
qDebug() << "success";
});
需要說明幾點
1,運用了訊號槽和匿名函式
2,觸發點選使用的是triggered,因為沒有click
3,不寫=會報錯
4,生成模態對話方塊需要使用exec,這是一種阻塞函式——換言之,函式執行到這裡就停住了,所以在關閉視窗後控制檯才會出現“success”
5,修改大小是因為預設的對話方塊太小,不改會彈警告
用open觸發非模態的對話方塊,程式碼如下
connect(ui->actionopen,&QAction::triggered,[=]()
{
//非模態對話方塊
QDialog *dlg2 = new QDialog(this);
dlg2->resize(200,100);
dlg2->show();
dlg2->setAttribute(Qt::WA_DeleteOnClose);
qDebug() << "success2";
});
需要說明的幾點:
1,要用new申請堆上的記憶體,不然,函式結束後棧記憶體回收,會出現視窗閃一下就消失的鬼片效果……
2,但是,堆上記憶體不會被自動回收,所以我們要設定一個狀態參量,設定它關閉視窗時回收
【attribute這裡翻譯成狀態,後面的列舉值是去幫助裡面查的】
2,標準對話方塊
所謂標準對話方塊,是Qt內建的一系列對話方塊,用於簡化開發
總所周知,qt是面向幫助文件程式設計的
所以……
先搜個文件康康。
在檔案裡新增標頭檔案,然後實現一下試試
這個可以直接呼叫靜態函式,所以舉一個做例子
connect(ui->actionnew,&QAction::triggered,[=](){
//QMessageBox::critical(this,"first","錯誤");
//QMessageBox::information(this,"second","資訊");
if(QMessageBox::question(this,"third","是否要這樣?",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel) == QMessageBox::Save)
qDebug() << "save";
});
根據編譯器的提示和上面的幫助文件,我們可以知道這個函式的幾個引數含義
比如question 從左到右為父類,名稱,文字框內容,下面選擇摁鈕的文字和預設摁鈕
其他函式類似
返回值是兩個選擇摁鈕的列舉值
3,其他常見對話方塊
①顏色對話方塊
這個對話方塊還蠻有意思的
順便一提,在qt中,顏色有三個引數,分別是red(),green()和blue()
而且這個對話方塊有自己的標頭檔案
#include <QColorDialog>
connect(ui->actionnew,&QAction::triggered,[=]()
{
QColor color =QColorDialog::getColor(QColor(255,0,0));
qDebug() << color.red();
});
然後就會彈出這樣一個對話方塊
【看見了嗎?輸入的255,0,0是初始值哦】
用這個對話方塊可以選定顏色
②選中檔案對話方塊
同樣需要標頭檔案
#include <QFileDialog>
connect(ui->actionnew,&QAction::triggered,[=]()
{
//檔案對話方塊
QFileDialog::getOpenFileName(this,"open","C:\\Users\\井室羽\\Desktop","*.doc");
});
三個引數,父類,檔案路徑和篩選條件(可不加)
返回值是QString,即選中的檔案路徑
③字型對話方塊
跟顏色對話方塊比較類似,順便一提字型的英文是FONT
#include <QFontDialog>
//字型對話方塊
bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("華文彩雲",36));
qDebug() << font.family().toUtf8().data();
QFont就是字型的類,裡面有family(字型),pointSize(大小),bold(是否加粗),italic(是否傾斜)都可以列印出來
另:列印字型需要轉一下格式,這個跟之前一樣。
相關文章
- Qt 對話方塊新增工具欄QT
- C/C++ Qt Dialog 對話方塊元件應用C++QT元件
- C++ Qt開發:標準Dialog對話方塊元件C++QT元件
- C++ Qt開發:自定義Dialog對話方塊元件C++QT元件
- Dialog對話方塊
- C/C++ Qt 自定義Dialog對話方塊元件應用C++QT元件
- QT常用控制元件(一)——選單欄和對話方塊QT控制元件
- 規定對話方塊
- 登入對話方塊
- JavaFX 如何使用內建的對話方塊Java
- flutter demo (四):對話方塊Flutter
- Flutter Widgets 對話方塊-DialogFlutter
- DialogPane對話方塊佈局
- JavaScript入門(4)確認(confirm訊息對話方塊)JavaScript
- w10系統對話方塊這麼變小_w10系統對話方塊如何縮小
- 【Qt 專欄】檔案對話方塊 檔案的彈窗選擇-QFileDialogQT
- React中的模式對話方塊React模式
- 0x7_對話方塊
- java Swing詢問對話方塊Java
- 在 Flutter 使用 GetX 對話方塊Flutter
- 訊息對話方塊 confirm() prompt()
- VUE:點選開啟的對話方塊外面時,對話方塊總是被關閉Vue
- 如何在Response.Redirect前彈出alert對話方塊
- SAP Spartacus 自定義Popover指令,如何實現彈出對話方塊自動關閉功能
- flutter佈局-7-About對話方塊Flutter
- [開發教程]第31講:Bootstrap對話方塊boot
- Element-Ui元件(三十八)Dialog 對話方塊UI元件
- Flutter 23: 圖解自定義 Dialog 對話方塊Flutter圖解
- 建立互動式shell指令碼對話方塊指令碼
- 21.Quick QML-FileDialog、FolderDialog對話方塊UI
- Electron 開啟儲存檔案對話方塊
- 如何在Element UI 對話方塊裡面載入高德地圖UI地圖
- 實現element-ui對話方塊可拖拽功能UI
- 模態對話方塊可能導致程式崩潰
- c++開啟挑選圖片對話方塊C++
- SAP C4C Mashup port bindingF4幫助對話方塊裡的資料來源
- 第五十課、關於對話方塊(About)------------------狄泰軟體學院
- Win10系統怎麼禁用“刪除檔案”對話方塊_win10禁用“刪除檔案”對話方塊的方法Win10