目录
1、对话框的概述:
特性:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框(此时,其默认出现的位置是 parent的中心)。
分类:对话框分为模态对话框和非模态对话框。
模态对话框:会阻塞同一应用的其他窗口的输入。
非模态对话框:不会阻塞其他窗口。
头文件<QDialog>
2、文件对话框:
用文件对话框来打开一个或者多个文件。
(1)、文件对话框打开一个文件
头文件是QFileDialog,使用的函数是头文件下的getOpenFileName
//文件对话框打开一个文件
void MainWindow::on_pushButton_clicked()
{ //定义一个字符串来接收getOpenFileName函数的返回值
//getOpenFileName(this,tr(文件对话框的名称),"路径",tr(图片的格式;;文件的格式))
QString fileName=QFileDialog::getOpenFileName(this,tr("打开文件"),"./",
tr("image(*.png *.xpm *.jpg);;Text(*.txt)"));
if(!fileName.isEmpty())
{ //如果返回的字符串不是空就把路径输出到文本编辑器
ui->plainTextEdit->appendPlainText(fileName);
}
}
运行结果:
(2)、用文件对话框打开多个多个文件
头文件是QFileDialog,使用的函数是头文件下的getOpenFileNames
//文件对话框打开多个文件
void MainWindow::on_pushButton_2_clicked()
{
QStringList files =QFileDialog::getOpenFileNames(this,"打开文件","./","Image(*.png *.xpm *.jpg)");
for(int i = 0;i<files.count();i++)
{ //files.count()函数是当前文件的个数
ui->plainTextEdit->appendPlainText(files.at(i));
}
}
运行截图:
3、颜色对话框:
颜色对话框的头文件QColorDialog
void MainWindow::on_pushButton_3_clicked()
{ //获取现有的调色板
QPalette pal =ui->plainTextEdit->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);
}
}
运行结果:
4、字体对话框:
字体对话框的头文件QFontDialog
void MainWindow::on_pushButton_4_clicked()
{
bool ok;
QFont iniFont = ui->plainTextEdit->font();
//获取原有的文本字体,没有设置字体的情况下
QFont font = QFontDialog::getFont(&ok,iniFont,this);
//设置默认的字体12
if(ok)//如果ok=true说明选择字体有效反之无效
{
ui->plainTextEdit->setFont(font);
//有效字体设置
}
}
运行结果:
5、消息对话框:
消息对话框的头文件是QMessageBox
void MainWindow::on_pushButton_5_clicked()
{
//错误的弹窗
QMessageBox::critical(this,"critical对话框","程序出现错误");
//警告弹窗
QMessageBox::warning(this,"warning对话框","程序出现警告");
//消息弹窗
QMessageBox::information(this,"消息框","程序一切正常",QMessageBox::Ok,QMessageBox::NoButton);
//aboutQt弹窗
QMessageBox::aboutQt(this,"about对话框""程序关于");
//选择弹窗
QMessageBox::StandardButton result;
result=QMessageBox::question(this,"选择消息框","文件已修改,是否保存",QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
if(result == QMessageBox::Yes)
{
qDebug()<<"正在保存";
}
if(result == QMessageBox::No)
{
qDebug()<<"不保存";
}
if(result == QMessageBox::Cancel)
qDebug()<<"取消操作";
}
运行结果:
6、输入对话框:
输入对话框的头文件QInputDialog。
void MainWindow::on_pushButton_6_clicked()
{
//生成输入文字对话框
bool ok;
QString text= QInputDialog::getText(this,tr("输入文字对话框"),tr("请输入文字"),
QLineEdit::Normal,"demo",&ok);
if(ok && !text.isEmpty())
{
ui->plainTextEdit->appendPlainText(text);
}
}
运行结果:
7、完善几个按钮的大小 :
setFixedSize(800,600);
ui->setupUi(this);
ui->pushButton->setFixedSize(100,30);
ui->pushButton_2->setFixedSize(100,30);//设置俩个按钮的大小
ui->plainTextEdit->setFixedSize(400,400);//设置文本编辑器大小
ui->pushButton_3->setFixedSize(100,30);//颜色对话框的大小
ui->pushButton_4->setFixedSize(100,30);//字体对话框的大小
ui->pushButton_5->setFixedSize(100,30);//消息对话框的大小
ui->pushButton_6->setFixedSize(100,30);//输入对话框的大小