QFileDialog 对话框
打开单个文件
void myDialog::on_openFileButton_clicked()
{
// 获取当前路径
QString curPath = QDir::currentPath();
QString dlgTitle = "选择一个文件";
QString filter = "文本选择(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
QString aFileName = QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter);
if(!aFileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(aFileName);
}
}
参数解释:
第一个参数:表示该窗口的父对象
第二个参数:表示该窗口的标题
第三个参数:表示该窗口的默认工作路径
第四个参数:表示过滤器,用于显示指定后缀的文件,可以设置多组,每一组之间需要使用两个分号隔开,同一组内不同后缀之间用空格隔开。
返回值:如果成功选择了一个文件,那么会返回该文件的完整路径,如果点击取消,那么将会返回一个空。
打开多个文件
void myDialog::on_pushButton_clicked()
{
// 获取当前路径
QString curPath = QDir::currentPath();
QString dlgTitle = "选择一个文件";
QString filter = "文本选择(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
QStringList fileNames = QFileDialog::getOpenFileNames(this, dlgTitle, curPath, filter);
for(int i = 0; i < fileNames.count(); i++)
{
ui->plainTextEdit->appendPlainText(fileNames.at(i));
}
}
可以看出参数和打开单个文件时是一样的
返回值:是一个QStringList对象,其中存储了所选文件们的完整路径。
选择目录
void myDialog::on_dirSelectBtn_clicked()
{
// 得到可执行文件所在目录
QString curPath = QCoreApplication::applicationDirPath();
QString dlgTitle = "选择一个目录";
QString selectedDir = QFileDialog::getExistingDirectory(this,
dlgTitle,curPath,QFileDialog::ShowDirsOnly);
if(!selectedDir.isEmpty())
{
ui->plainTextEdit->appendPlainText(selectedDir);
}
}
第一个参数:表示该窗口的父对象
第二个参数:表示该窗口的标题
第三个参数:表示该窗口的默认工作路径
第四个参数:QFileDialog::ShowDirsOnly表示只显示目录
返回值:所选目录的完整路径
选择保存文件名
选择一个保存文件,如果选择的是一个已经存在的文件,会提示是否覆盖源文件,如果提示覆盖,则会返回已存在文件的完整路径,但是不会对已有文件进行任何处理,如需处理需要自己编码实现。
void myDialog::on_fileSaveBtn_clicked()
{
// 得到可执行文件所在目录
QString curPath = QCoreApplication::applicationDirPath();
QString dlgTitle = "保存文件";
QString filter = "h 文件(*.h);;C 文件(*.c);;所有文件(*.*)";
QString saveFileName = QFileDialog::getSaveFileName(this, dlgTitle, curPath, filter);
if(!saveFileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(saveFileName);
}
}
参数与返回值同选择一个文件。
选择颜色
void myDialog::on_colorSelectBtn_clicked()
{
QPalette pal = ui->plainTextEdit->palette();// 获取现有的palette
QColor iniColor = pal.color(QPalette::Text); //现有的文件颜色
QColor color = QColorDialog::getColor();//选择颜色
if(color.isValid())
{
pal.setColor(QPalette::Text, color);
ui->plainTextEdit->setPalette(pal);
}
}
返回值:一个QColor变量,如果在选择的时候取消则返回一个无效的颜色变量。
isValid方法:当颜色是有效的时候,返回真,否则返回假
setPalette方法:修改当前文本的颜色
颜色对话框
void myDialog::on_fontSelectBtn_clicked()
{
QFont iniFont = ui->plainTextEdit->font();//获得字体
bool ok = false;
QFont font = QFontDialog::getFont(&ok, iniFont);
if(ok)
{
ui->plainTextEdit->setFont(font);
}
}
因为颜色选择对话框没有与颜色选择对话框类似的isValid方法,所以我们需要传入一个ok变量的地址,然后用这个变量来判断是否成功得到了字体变量。