对话框
- 一.前言
- 二.文件对话框
- 1.选择一个文件
- 2.选择多个文件
- 3.选择目录
- 4.保存文件
- 三.颜色对话框
- 1.获取颜色
- 四.字体对话框
- 1.获取字体
- 五.输入对话框
- 1.输入文本
- 2.输入整数
- 3.输入小数
- 4.输入条目
- 六.消息对话框
- 1.问题框
- 2.信息框
- 3.警告框
- 4.危机框
- 5.关于框
- 6.关于qt框
- 七.总结
一.前言
对话框就是主窗口的子窗口弹出,以供你操作完后,才能继续对主窗口进行操作。
光说不练假把式,我们还是来边做边学。
目标图:
看到这么多是不是已经害怕了,不用怕,只要记住接口就行了,参数我们可以查找在线文档!
先做界面吧!
不会的可以问我哦,界面的拖放就不讲了!
二.文件对话框
1.选择一个文件
void MainWindow::on_pushButtonSelectFile_clicked()
{
QString fileName= QFileDialog::getOpenFileName(
this,//父窗口是谁
"选择一个文件",//对话框标题
QDir::currentPath(),//打开对话框的路径
"文本文件(*.txt);;C/C++文件(*.c *.h *.cpp);;图片文件(*.png *.jpg *.gif);;所有文件(*.*)");//筛选器
if(!fileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(fileName);
}
}
运行结果:
点击会弹出你刚刚设置路径的文件对话框
确定后
可以通过f1来查看参数,所以我们需要的是记住接口
2.选择多个文件
用法基本与选择一个文件相同,只不过接口多了一个S,返回的是一个字符串链表而已!
void MainWindow::on_pushButtonSelectFiles_clicked()
{
QStringList fileNames= QFileDialog::getOpenFileNames(
this,
"选择多个文件",
QDir::currentPath(),
"文本文件(*.txt);;C/C++文件(*.c *.h *.cpp);;图片文件(*.png *.jpg *.gif);;所有文件(*.*)");
if(fileNames.count()>0)
{
for(int i=0;i<fileNames.count();i++)
{
ui->plainTextEdit->appendPlainText(fileNames[i]);
}
}
}
运行结果:
3.选择目录
void MainWindow::on_pushButtonSelectMu_clicked()
{
QString fileName= QFileDialog::getExistingDirectory(
this,
"选择一个文件",
QDir::currentPath(),
QFileDialog::ShowDirsOnly);//只显示目录
if(!fileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(fileName);
}
}
运行结果:
4.保存文件
void MainWindow::on_pushButtonSaveFile_clicked()
{
QString fileName= QFileDialog::getSaveFileName(
this,
"选择一个文件",
QDir::currentPath(),
"文本文件(*.txt);;C/C++文件(*.c *.h *.cpp);;图片文件(*.png *.jpg *.gif);;所有文件(*.*)");
if(!fileName.isEmpty())//如果路径不为空
{
//将纯文本编辑器的内容保存到txt文件中
QFile qFile(fileName);
//以只写,保存到文本文件,截断的方式打开文件
if(!qFile.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Truncate))
{
return;//打开文件失败就返回
}
QTextStream stream(&qFile);
stream<<ui->plainTextEdit->toPlainText();
qFile.close();
ui->plainTextEdit->appendPlainText("已保存到:"+fileName);
}
}
运行结果:
我们来看看是不是真的保存了
哈哈看来真的保存了也。
三.颜色对话框
1.获取颜色
void MainWindow::on_pushButtonColoe_clicked()
{
QPalette plet=ui->plainTextEdit->palette();//拿到纯文本编辑器
QColor currentColor=plet.color(QPalette::Text);//拿到文本颜色
QColor color=QColorDialog::getColor(
currentColor,//默认选中颜色
this,
"颜色选择框");
if(color.isValid())
{
plet.setColor(QPalette::Text,color);//修改成选择的颜色
ui->plainTextEdit->setPalette(plet);//设置到纯文本中
}
}
运行结果:
四.字体对话框
1.获取字体
void MainWindow::on_pushButtonFont_clicked()
{
bool ok=false;
QFont font=QFontDialog::getFont(
&ok,//判断是否选择成功
ui->plainTextEdit->font(),//对话框默认字体
this,
"字体选择框");
if(ok)
{
ui->plainTextEdit->setFont(font);
}
}
参数我也记不住,一定要看在线文档呀
运行结果:
五.输入对话框
1.输入文本
void MainWindow::on_pushButtonString_clicked()
{
bool ok=false;
QString str=QInputDialog::getText(
this,
"输入文本框",
"请输入姓名:",
QLineEdit::Normal,//输入的方式
"姚国林",//默认值
&ok);//判断是否成功
if(ok&&!str.isEmpty())
{
ui->plainTextEdit->appendPlainText(str);
}
}
运行结果:
这里的输入方式有4种
NoEcho就是没有回显的,类似于Linux操作系统里输入密码
Password就是正常的*******这种
最后一个就是,当输入密码时显示,不输入的时候 ******
2.输入整数
void MainWindow::on_pushButtonInt_clicked()
{
bool ok=false;
//我这里是输入整数打算与字体大小关联起来
int value =QInputDialog::getInt(
this,
"整数输入框",
"请输入字体大小:",
ui->plainTextEdit->font().pixelSize(),//默认输入的大小
8,//最小值
80,//最大值
1,//单步值
&ok);
if(ok)
{
QFont font=ui->plainTextEdit->font();
font.setPointSize(value);
ui->plainTextEdit->setFont(font);
}
}
运行结果:
3.输入小数
void MainWindow::on_pushButtonFloat_clicked()
{
bool ok=false;
double value=QInputDialog::getDouble(
this,
"输入浮点数框",
"输入小数:",//前缀
3.14,//默认值
0,//最小值
999,//最大值
2,//精度
&ok);
if(ok)
{
QString str=QString::asprintf("输入了一个浮点数:%.2f",value);
ui->plainTextEdit->appendPlainText(str);
}
}
运行结果:
4.输入条目
void MainWindow::on_pushButtonItem_clicked()
{
bool ok=false;
QStringList jobs={"老师","医生","炊事员","程序员"};
QString job= QInputDialog::getItem(
this,
"输入条目框",
"请选择职业:",
jobs,//条目列表
0,//默认显示第几个
true,//是否能进行编辑
&ok);
if(ok&&!job.isEmpty())
{
ui->plainTextEdit->appendPlainText(job);
}
}
运行结果:
六.消息对话框
1.问题框
void MainWindow::on_pushButtonQuestion_clicked()
{
QMessageBox::StandardButton ret= QMessageBox::question(//返回的是一个标准按钮
this,
"问题框",
"你承认你是一个帅哥吗?",//问题框内容
QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,//选择的按钮
QMessageBox::NoButton);//默认的选择
if(ret==QMessageBox::Yes)
{
ui->plainTextEdit->appendPlainText("选择了 YES");
}
else if(ret==QMessageBox::No)
{
ui->plainTextEdit->appendPlainText("选择了 No");
}
else if(ret==QMessageBox::Cancel)
{
ui->plainTextEdit->appendPlainText("选择了 Cancel");
}
else
{
ui->plainTextEdit->appendPlainText("什么也没有选择");
}
}
运行结果:
2.信息框
void MainWindow::on_pushButtonInformation_clicked()
{
QMessageBox::information(
this,
"消息框",
"你居然不给我点关注",
QMessageBox::Ok,
QMessageBox::NoButton);
}
运行结果:
3.警告框
void MainWindow::on_pushButtonWarning_clicked()
{
QMessageBox::warning(
this,
"警告框",
"你要完蛋了!");
}
运行结果:
4.危机框
void MainWindow::on_pushButtonCritical_clicked()
{
QMessageBox::critical(
this,
"危机框",
"你完蛋了!系统姚重启了");
}
运行结果:
5.关于框
void MainWindow::on_pushButtonAbout_clicked()
{
QMessageBox::about(
this,
"关于框",
"我是一位天才,我的能力十分强悍!");
}
运行结果:
6.关于qt框
void MainWindow::on_pushButtonAboutQt_clicked()
{
QMessageBox::aboutQt(
this,
"关于Qt");
}
运行结果:
七.总结
虽然对话框的种类虽多,但是一类的用法基本差不多,重要的是我们要记住接口就行了,参数不要背,看在线文档!
对了,这里姚用到这些头文件:
慢慢成长,慢慢成为大