QT使用教程之QDialog概述
1、QDialog概述
概念:
對話框是 GUI 程序中不可或缺的組成部分。很多不能或者不適合放入主窗口的功能組件都必須放在對話框中設置。對話框通常會是一個頂層窗口,出現在程序最上層,用于實現短期任務或者簡潔的用戶交互。
分類:
模態對話框:就是會阻塞同一應用程序中其它窗口的輸入
非模態對話框:不會阻塞同一應用程序中其它窗口的輸入
2、自定義QDialog對話框
模態對話框:
#include
QDialog dialog;
dialog.setWindowTitle(tr("Hello, dialog!"));
dialog.exec();
非模態對話框:
QDialog *dialog = new QDialog;
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWindowTitle(tr("Hello, dialog!"));
dialog->show();
注意:
1、對話框創建要在堆創建
2、由于對話框的特性,可以設置對話框關閉,自動銷毀對話框。
3、標準對話框
概念:標準對話框,是 Qt 內置的一系列對話框。
分類:
4、文件對話框
#include
#include
#include
//打開一個文件
QString fileName = QFileDialog::getOpenFileName(this, tr("打開文件"),"./", tr("Images (*.png *.xpm *.jpg);;Text (*.txt)"));
if(!fileName.isEmpty())
ui->plainTextEdit->appendPlainText(fileName);
//打開多個文件
QStringList filesName = QFileDialog::getOpenFileNames(
this,
"打開文件",
"./",
"Images (*.png *.xpm *.jpg)");
for(int i=0;i<filesname.count();i++)< p="">
{
qDebug()<<filesname.at(i);< p="">
}
總結:
1、文件對話框使用,參考幫助文檔。
2、getOpenFileName,getOpenFileNames參數:父類對象指針,文件對話框的標題,打開文件路徑,文件過濾器
3、文件過濾器寫法:
"Images (*.png *.xpm *.jpg)"
"Images (*.png *.xpm *.jpg);;Text (*.txt)"
5、選擇顏色對話框
QColorDialog::getColor生成顏色對話框
//生成顏色對話框,選擇顏色,設置編輯器字體顏色
QPalette pal = ui->plainTextEdit->palette();//獲取現有palette
QColor iniColor = pal.color(QPalette::Text);//現有文字顏色
QColor color = QColorDialog::getColor(iniColor,this,"選擇顏色");
//判斷選擇顏色是否有效,如果有效設置編輯器字體顏色
if(color.isValid()){
pal.setColor(QPalette::Text,color);
ui->plainTextEdit->setPalette(pal);
}
總結:
1、顏色對話框使用,參考幫助文檔。
2、getColor生成顏色對話框,返回值是一個顏色變量,如果在顏色對話框選擇取消,返回值無效,反之有效
6、選擇字體對話框
QFontDialog::getFont生成選擇字體對話框
bool ok;
QFont iniFont = ui->plainTextEdit->font();//獲取原有文本框字體
QFont font = QFontDialog::getFont(&ok, iniFont, this);
if (ok) {//如果ok=true
ui->plainTextEdit->setFont(font);
}
總結:
1、選擇字體對話框使用,參考幫助文檔。
2、getFont生成選擇字體對話框,返回值不能判斷有效,一般是根據getFont的第一個參數邏輯變量是否為ture。
7、消息對話框
//錯誤彈窗
//QMessageBox::critical(this,"錯誤消息對話框","程序出現錯誤");
//警告彈窗
// QMessageBox::warning(this,"警告消息對話框","程序出現警告");
//消息彈窗
// QMessageBox::information(this,"消息對話框","程序一切正常",QMessageBox::Ok,QMessageBox::NoButton);
//消息選擇彈窗
QMessageBox::StandardButton result;
result=QMessageBox::question(this,"選擇消息框","文件已修改,是否保存",QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,QMessageBox::NoButton);
if(result==QMessageBox::Yes)
qDebug()<<"正在保存";
else if(result==QMessageBox::No)
qDebug()<<"不保存";
else
qDebug()<<"取消操作";
8、輸入對話框
QInputDialog::輸入文本/整形數據/浮點型數據....對話框
//生成輸入文字對話框
bool ok;
QString text = QInputDialog::getText(this, tr("輸入文字對話框"),
tr("請輸入文字"), QLineEdit::Normal,"demo", &ok);
if (ok && !text.isEmpty())
ui->plainTextEdit->appendPlainText(text);

相關推薦HOT
更多>>
unity圖集合并成圖片
Unity圖集合并成圖片是一種將多個小圖片合并成一個大圖片的技術。這種技術在游戲開發中非常常見,可以有效地減少內存占用和提高渲染效率。我們...詳情>>
2023-08-28 18:07:44
unity向量旋轉得另一向量
Unity中的向量旋轉是一項常見的操作,可以通過使用旋轉矩陣或四元數來實現。以下是關于如何在Unity中旋轉一個向量得到另一個向量的詳細解釋。在...詳情>>
2023-08-28 18:07:42
unity哪個版本免費
Unity是一款強大的游戲開發引擎,提供了許多功能和工具,可以幫助開發者輕松創建高質量的游戲。關于Unity的版本免費問題,我將為你詳細解答。Un...詳情>>
2023-08-28 18:07:42
unity對象池怎么寫
Unity對象池是一種常用的優化技術,用于管理和重復利用游戲中的對象,以減少內存分配和銷毀的開銷。在Unity中,可以通過編寫一些代碼來實現對象...詳情>>
2023-08-28 18:07:41