QT标准对话框

打印 上一主题 下一主题

主题 979|帖子 979|积分 2937

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、概述

1.概述

Qt为应用程序设计提供了一些常用的标准对话框,如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等,用户无需自己设计这些常用的对话框,这样可以减少程序设计工作量。
2.实例


二、对话框范例

1.QFileDialog

1.1.打开一个文件

  1. void Dialog::on_openfileBtn_clicked()
  2. {
  3.     QString curPath = QDir::currentPath();
  4.     QString dlgTitle = "选择一个文件";
  5.     QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
  6.     QString aFileName = QFileDialog::getOpenFileName(this,dlgTitle,curPath, filter);
  7.     if(!aFileName.isEmpty()){
  8.         ui->plainTextEdit->appendPlainText(aFileName);
  9.     }
  10. }
复制代码
1.2.打开多个文件

  1. void Dialog::on_openfilesBtn_clicked()
  2. {//选择多个文件
  3.     QString curPath = QDir::currentPath();
  4.     QString dlgTitle = "选择多个文件";
  5.     QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
  6.     QStringList fileList = QFileDialog::getOpenFileNames(this,dlgTitle, curPath, filter);
  7.     for(int i = 0; i<fileList.count(); i++)
  8.     {
  9.         ui->plainTextEdit->appendPlainText(fileList.at(i));
  10.     }
  11. }
复制代码
1.3.选择已有目次

  1. void Dialog::on_selectdirBtn_clicked()
  2. {
  3.     QString curPath=QCoreApplication::applicationDirPath();
  4.     QString dlgTitle = "选择一个目录";
  5.     QString selectedDir = QFileDialog::getExistingDirectory(this, dlgTitle, curPath, QFileDialog::ShowDirsOnly);
  6.     if(!selectedDir.isEmpty())
  7.         ui->plainTextEdit->appendPlainText(selectedDir);
  8. }
复制代码
1.4.选择保存文件名
  1. void Dialog::on_saveasFile_clicked()
  2. {
  3.     QString curPath = QCoreApplication::applicationDirPath();
  4.     QString dlgTitle = "保存文件";
  5.     QString filter = "h 文件(*.h);;c++文件(.cpp);;所有文件(*.*)";
  6.     QString aFileName = QFileDialog::getSaveFileName(this, dlgTitle, curPath, filter);
  7.     if(!aFileName.isEmpty())
  8.         ui->plainTextEdit->appendPlainText(aFileName);
  9. }
复制代码
2.QColorDialog

  1. void Dialog::on_selectcolorBtn_clicked()
  2. {//选择颜色
  3.     QPalette pal = ui->plainTextEdit->palette(); //获取现有palette,getColor需要一个初始颜色作为参数
  4.     QColor iniColor = pal.color(QPalette::Text); //现有的文字颜色
  5.     QColor color = QColorDialog::getColor(iniColor, this, "选择颜色");
  6.     if(color.isValid()){
  7.         pal.setColor(QPalette::Text, color);
  8.         ui->plainTextEdit->setPalette(pal);
  9.     }
  10. }
复制代码
3.QFontDialog

  1. void Dialog::on_selectfontBtn_clicked()
  2. {
  3.     QFont iniFont = ui->plainTextEdit->font();
  4.     bool ok = false;         //由于getFont返回的font没有类似isValid的函数判断有效性,所以传入ok,返回true则有效
  5.     QFont font = QFontDialog::getFont(&ok, iniFont);
  6.     if(ok){
  7.         ui->plainTextEdit->setFont(font);
  8.     }
  9. }
复制代码
4.InputDialog标准输入对话框

4.1.输入字符串


  1. void Dialog::on_inputstrBtn_clicked()
  2. {//输入字符串
  3.     QString dlgTitle = "输入文字对话框";
  4.     QString txtLabel = "请输入文件名";
  5.     QString defaultInput = "新建文件.txt";
  6.     QLineEdit::EchoMode echoMode = QLineEdit::Normal;
  7. //    QLineEdit::EchoMode echoMode = QLineEdit::Password;
  8.     bool ok = false;
  9.     QString text = QInputDialog::getText(this, dlgTitle, txtLabel,echoMode, defaultInput, &ok);
  10.     if(ok && !text.isEmpty()){
  11.         ui->plainTextEdit->appendPlainText(text);
  12.     }
  13. }
复制代码
4.2.输入整数


  1. void Dialog::on_inputIntBtn_clicked()
  2. {//输入整数
  3.     QString dlgTitle = "输入整数对话框";
  4.     QString txtLabel = "设置字体大小";
  5.     int defaultValue = ui->plainTextEdit->font().pointSize();
  6.     int minValue = 6, maxValue = 50, stepValue = 1;
  7.     bool ok = false;
  8.     int  inputValue = QInputDialog::getInt(this, dlgTitle, txtLabel, defaultValue, minValue, maxValue, stepValue, &ok);
  9.     if(ok)
  10.     {
  11.         QFont font = ui->plainTextEdit->font();
  12.         font.setPointSize(inputValue);
  13.         ui->plainTextEdit->setFont(font);
  14.     }
  15. }
复制代码
4.3.输入浮点数


  1. void Dialog::on_inputfloatBtn_clicked()
  2. {//输入浮点数
  3.     QString dlgTitle = "输入浮点数对话框";
  4.     QString txtLabel = "输入一个浮点数";
  5.     float defaultValue = 3.13;
  6.     float minValue = 0, maxValue = 1000;
  7.     int decimals = 2; //小数点后的位数
  8.     bool ok = false;
  9.     float inputValue = QInputDialog::getDouble(this, dlgTitle, txtLabel, defaultValue, minValue, maxValue, decimals, &ok);
  10.     if(ok)
  11.     {
  12.         QString str = QString::asprintf("输入了一个浮点数:%.2f", inputValue);
  13.         ui->plainTextEdit->appendPlainText(str);
  14.     }
  15. }
复制代码
4.4.条目自选输入


  1. void Dialog::on_entryBtn_clicked()
  2. {//条目选择输入
  3.     QStringList items;
  4.     items<<"优秀"<<"良好"<<"合格"<<"不合格";
  5.     QString dlgTitle = "条目选择对话框";
  6.     QString txtLabel = "请选择级别";
  7.     int curIndex = 0;    //初始选择项
  8.     bool editable = true;    //ComoBox 是否可编辑
  9.     bool ok = false;
  10.     QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items, curIndex, editable, &ok);
  11.     if(ok && !text.isEmpty()){
  12.         ui->plainTextEdit->appendPlainText(text);
  13.     }
  14. }
复制代码
5.QMessageBox消息对话框

5.1.无返回值对话框范例

  1. //以下四种返回按钮只有ok,无需关心对话框的返回值
  2. void Dialog::on_informationBtn_clicked()
  3. {//information
  4.     QString dlgTitle = "information消息框";
  5.     QString strInfo = "文件已经打开,字体大小已设置";
  6.     QMessageBox::warning(this, dlgTitle, strInfo, QMessageBox::Ok, QMessageBox::NoButton);
  7. }
  8. void Dialog::on_warningBtn_clicked()
  9. {//warning
  10.     QString dlgTitle = "warning消息框";
  11.     QString strInfo = "文件内容已经被修改";
  12.     QMessageBox::information(this, dlgTitle, strInfo);
  13. }
  14. void Dialog::on_criticalBtn_clicked()
  15. {//critical
  16.     QString dlgTitle = "warning消息框";
  17.     QString strInfo = "文件内容已经被修改";
  18.     QMessageBox::critical(this, dlgTitle, strInfo);
  19. }
  20. void Dialog::on_aboutBtn_clicked()
  21. {//about
  22.     QString dlgTitle = "about消息框";
  23.     QString strInfo = "我开发的数据查看软件V1.0 \n 保留所有权";
  24.     QMessageBox::about(this, dlgTitle, strInfo);
  25. }
复制代码
5.2.有返回值对话框范例

  1. void Dialog::on_questionBtn_clicked()
  2. {
  3.     QString dlgTitle = "Question消息框";
  4.     QString strInfo="文件已被修改,是否保存修改?";
  5.     QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;
  6.     QMessageBox::StandardButton result;//返回选择的按钮
  7.     result = QMessageBox::question(this, dlgTitle, strInfo, QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel, defaultBtn);
  8.     if(result == QMessageBox::Yes)
  9.         ui->plainTextEdit->appendPlainText("Question消息框:Yes被选择");
  10.     else if(result == QMessageBox::No)
  11.         ui->plainTextEdit->appendPlainText("Question消息框:No被选择");
  12.     else if(result == QMessageBox::Cancel)
  13.         ui->plainTextEdit->appendPlainText("Question消息框:Cancel被选择");
  14.     else
  15.         ui->plainTextEdit->appendPlainText("Question消息框:无选择");
  16. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表