标准对话框
1、颜色对话框
头文件: < QColorDialog >
使用
QColor color=QColorDialog::getColor(Qt::green,this,tr("color dialog"),QColorDialog::ShowAlphaChannel);
获取颜色;
参数分别是初始颜色、指定父窗口、设置对话框标题,显示设置透明度选项(可缺省)。
也可以使用创建对象的方法。效果是一样的。
QColorDialog dialog(Qt::red, this); // 创建对象
dialog.setOption(QColorDialog::ShowAlphaChannel); // 显示alpha选项
dialog.exec(); // 以模态方式运行对话框
QColor color = dialog.currentColor();
2、文件对话框
头文件:< QFileDialog >
使用QFileDialog类中的getOpenFileName()函数获取文件名
QString fileName = QFileDialog::getOpenFileName(this, tr("文件对话框"),
"D:", tr("图片文件(*png *jpg);;文本文件(*txt)"));
参数:指定父窗口、设置对话框标题、指定默认打开的目录路径、设置文件类型过滤器
注意多个过滤器之间要用2个分号;;隔开。
3、字体对话框
头文件:< QFontDialog>
使用QFileDialog类中的getFont()获取选择的字体。
bool ok;
QFont font = QFontDialog::getFont(&ok, this);
// 如果按下“OK”按钮,那么让“字体对话框”按钮使用新字体
if (ok) ui->buttonFont->setFont(font);
else qDebug() << tr("没有选择字体!");
4、输入对话框
头文件:< QInputDialog >
bool ok;
// 获取字符串
QString string = QInputDialog::getText(this, tr("输入字符串对话框"),
tr("请输入用户名:"), QLineEdit::Normal,tr("admin"), &ok);
if(ok) qDebug() << "string:" << string;
// 获取整数
int value1 = QInputDialog::getInt(this, tr("输入整数对话框"),
tr("请输入-1000到1000之间的数值"), 100, -1000, 1000, 10, &ok);
if(ok) qDebug() << "value1:" << value1;
// 获取浮点数
double value2 = QInputDialog::getDouble(this, tr("输入浮点数对话框"),
tr("请输入-1000到1000之间的数值"), 0.00, -1000, 1000, 2, &ok);
if(ok) qDebug() << "value2:" << value2;
QStringList items;
items << tr("条目1") << tr("条目2");
// 获取条目
QString item = QInputDialog::getItem(this, tr("输入条目对话框"),
tr("请选择或输入一个条目"), items, 0, true, &ok);
if(ok) qDebug() << "item:" << item;
getText()参数:指定父窗口、设置窗口标题、设置对话框中的标签显示文本、设置输入字符串的显示模式(显示小黑点之类的)。
getInt()参数:默认数值、最小值、最大值、箭头按钮每次变化数值。
getDouble()可以输入浮点数。
getItem()输入一个条目。
5、消息对话框
头文件:< MessageBox >
// 问题对话框
int ret1 = QMessageBox::question(this, tr("问题对话框"),
tr("你了解Qt吗?"), QMessageBox::Yes, QMessageBox::No);
if(ret1 == QMessageBox::Yes) qDebug() << tr("问题!");
// 提示对话框
int ret2 = QMessageBox::information(this, tr("提示对话框"),
tr("这是Qt书籍!"), QMessageBox::Ok);
if(ret2 == QMessageBox::Ok) qDebug() << tr("提示!");
// 警告对话框
int ret3 = QMessageBox::warning(this, tr("警告对话框"),
tr("不能提前结束!"), QMessageBox::Abort);
if(ret3 == QMessageBox::Abort) qDebug() << tr("警告!");
// 错误对话框
int ret4 = QMessageBox::critical(this, tr("严重错误对话框"),
tr("发现一个严重错误!"), QMessageBox::YesAll);
if(ret4 == QMessageBox::YesAll) qDebug() << tr("错误");
// 关于对话框
QMessageBox::about(this, tr("关于对话框"),tr("哈哈!"));
6、进度对话框
头文件:< QProgressDialog >
QProgressDialog dialog(tr("文件复制进度"), tr("取消"), 0, 50000, this);
dialog.setWindowTitle(tr("进度对话框")); // 设置窗口标题
dialog.setWindowModality(Qt::WindowModal); // 将对话框设置为模态
dialog.show();
for(int i=0; i<=50000; i++) { // 演示复制进度
dialog.setValue(i); // 设置进度条的当前值
QCoreApplication::processEvents(); // 避免界面冻结,这句必须有!
if(dialog.wasCanceled()) break; // 按下取消按钮则中断
}
7、错误信息对话框
首先在头文件中添加
class QErrorMessage;
添加私有对象:
QErrorMessage *errordlg;
头文件:< QErrorMessage >
构造函数中添加
errordlg=new QErrorMessage(this);
槽函数中
errordlg->setWindowTitle(tr("错误信息对话框"));
errordlg->showMessage(tr("这里是出错信息!"));
8、向导对话框
参考Qt中自带的Trivial Wizard、License Wizard和Class Wizard 这三个示例程序。