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:44unity向量旋转得另一向量
Unity中的向量旋转是一项常见的操作,可以通过使用旋转矩阵或四元数来实现。以下是关于如何在Unity中旋转一个向量得到另一个向量的详细解释。在...详情>>
2023-08-28 18:07:42unity哪个版本免费
Unity是一款强大的游戏开发引擎,提供了许多功能和工具,可以帮助开发者轻松创建高质量的游戏。关于Unity的版本免费问题,我将为你详细解答。Un...详情>>
2023-08-28 18:07:42unity对象池怎么写
Unity对象池是一种常用的优化技术,用于管理和重复利用游戏中的对象,以减少内存分配和销毁的开销。在Unity中,可以通过编写一些代码来实现对象...详情>>
2023-08-28 18:07:41