Qt为应用程序设计提供了一些常用的标准对话框,如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等,对于这些常用的对话框我们不需要自己设计,直接使用就可以。
消息对话框
消息对话框QMessageBox
用于显示提示、警告、错误等信息,或进行确认选择,由几个静态函数实现这些功能。其中 information()、warning()、critical() 和 about() 这几个函数的输入参数和使用方法相同,只是信息提示的图标有区别,一般只有一个 OK 按钮,且无须关心对话框的返回值, 而question() 函数用于打开一个选择对话框,提示信息,并提供 Yes、No、OK、Cancel 等按钮,用户单击某个按钮返回选择。
简单消息提示
// information
QMessageBox::information(this, "注册提示", "注册成功!请保管好您的用户名和密码");
// warning
QMessageBox::warning(this, "系统提示", "您的权限不足,请联系管理员");
// critical
QMessageBox::critical(this, "登录", "您输入的用户名或密码错误,登录失败!");
确认消息提示
// question
if (QMessageBox::Yes == QMessageBox::question(this, "员工管理", "确认要删除该员工信息吗?"))
{
// 选择了“是”,进行删除操作
// . . .
}
打开文件对话框
QString curPath=QDir::currentPath();//获取系统当前目录
//获取应用程序的路径
QString dlgTitle="选择头像图片"; //对话框标题
QString filter="图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
QString headImgPath=QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter);
if (!headImgPath.isEmpty())
{
// 设置图片作为头像
}
颜色选择对话框
// 获取颜色
QPalette pal=ui->pushButton->palette(); //获取按钮的palette
QColor iniColor=pal.color(QPalette::ButtonText); //按钮的文字颜色(编辑框文本颜色是Text)
QColor color=QColorDialog::getColor(iniColor,this, "选择颜色"); // 打开选择颜色对话框
if (color.isValid()) //选择有效
{
pal.setColor(QPalette::ButtonText, color); //palette设置选择的颜色
ui->pushButton->setPalette(pal); //设置 palette
}
字体选择对话框
//选择字体
QFont iniFont = ui->pushButton->font(); //获取按钮的字体
bool ok = false;
QFont font = QFontDialog::getFont(&ok, iniFont); //选择字体
if (ok) //选择有效
{
ui->pushButton->setFont(font);
}
标准输入对话框
一般标准输入对话框可以用来输入字符串、数值,还可以做简单的下拉框选择。
输入字符串
QInputDialog::getText()
函数将会打开一个对话框用于输入字符串,传递的参数包括对话框标题、提示标签文字、缺省输入、编辑框响应模式等。
//输入字符串
QString dlgTitle = "输入文字对话框"; // 对话框标题
QString txtLabel = "请输入你的姓名"; // 文本提示
QString defaultInput = "例如:张三"; // 编辑框默认文本内容
QLineEdit::EchoMode echoMode = QLineEdit::Normal;//回显模式,正常文字输入
//QLineEdit::EchoMode echoMode=QLineEdit::Password;//回显模式,密码输入
bool ok = false; // 确认标志
QString text = QInputDialog::getText(this, dlgTitle, txtLabel, echoMode, defaultInput, &ok);
if (ok && !text.isEmpty())
{
// 确认后执行其他操作。。。
qDebug() << "输入了" << text;
}
输入整数
输入整数对话框使用一个 SpinBox
组件输入整数,getInt() 需要传递的参数包括数值大小范围、步长、初始值,确认选择输入后,将输入的整数值作为文本框字体的大小。
// 输入整数
QString dlgTitle = "输入整数对话框";
QString txtLabel = "设置字体大小";
int defaultValue = ui->pushButton->font().pointSize(); //现有字体大小
int minValue = 6, maxValue = 50, stepValue = 1; //范围,步长
bool ok = false;
int inputValue = QInputDialog::getInt(this, dlgTitle, txtLabel,
defaultValue, minValue, maxValue, stepValue, &ok);
if (ok) //是否确认输入
{
QFont font=ui->pushButton->font();
font.setPointSize(inputValue);
ui->pushButton->setFont(font);
}
输入浮点数
使用 QInputDialog::getDouble()
函数输入一个浮点数,输入对话框使用一个 QDoubleSpinBox 作为输入组件,getDouble() 的输入参数需要输入范围、初始值、小数点位数等。
// 输入浮点数
QString dlgTitle = "输入浮点数对话框";
QString txtLabel = "输入您的身高";
float defaultValue = 175.5;
float minValue = 0, maxValue = 10000; //范围
int decimals = 1; //小数点位数
bool ok = false;
float inputValue = QInputDialog::getDouble(this, dlgTitle, txtLabel,
defaultValue, minValue, maxValue, decimals, &ok);
if (ok) // 确认选择
{
// 执行其他操作
}
下拉列表选择
使用 QInputDialog::getItem()
可以从一个 ComboBox 组件的下拉列表中选择输入。
// 下拉列表选择
QStringList items; //ComboBox列表的内容
items << "简单" << "普通" << "困难" << "地狱难度";
QString dlgTitle = "条目选择对话框";
QString txtLabel = "请选择游戏难度";
int curIndex = 0; //初始选择项
bool editable = false; //ComboBox是否可编辑
bool ok = false;
QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items, curIndex, editable, &ok);
if (ok && !text.isEmpty())
{
// 执行其他操作
}