生活随笔
收集整理的這篇文章主要介紹了
Qt中的QFileDialog类的几个示范代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
From:?http://www.hedabbs.cn/thread-102600-1-1.html
void Dialog::setExistingDirectory()
{??//選擇一個文件夾;
? ? QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly;
? ? if (!native->isChecked())
? ?? ???options |= QFileDialog::DontUseNativeDialog;
? ? QString directory = QFileDialog::getExistingDirectory(this,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???tr("QFileDialog::getExistingDirectory()"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???directoryLabel->text(),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???options);
? ? if (!directory.isEmpty())
? ?? ???directoryLabel->setText(directory);
} 復制代碼
void Dialog::setOpenFileName()
{??//打開一個文件;
? ? QFileDialog::Options options;
? ? if (!native->isChecked())
? ?? ???options |= QFileDialog::DontUseNativeDialog;
? ? QString selectedFilter;
? ? QString fileName = QFileDialog::getOpenFileName(this,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???tr("QFileDialog::getOpenFileName()"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???openFileNameLabel->text(),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???tr("All Files (*);;Text Files (*.txt)"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???&selectedFilter,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???options);
? ? if (!fileName.isEmpty())
? ?? ???openFileNameLabel->setText(fileName);
} 復制代碼
void Dialog::setOpenFileNames()
{??//打開多個文件;
? ? QFileDialog::Options options;
? ? if (!native->isChecked())
? ?? ???options |= QFileDialog::DontUseNativeDialog;
? ? QString selectedFilter;
? ? QStringList files = QFileDialog::getOpenFileNames(
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???this, tr("QFileDialog::getOpenFileNames()"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???openFilesPath,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???tr("All Files (*);;Text Files (*.txt)"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???&selectedFilter,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???options);
? ? if (files.count()) {
? ?? ???openFilesPath = files[0];
? ?? ???openFileNamesLabel->setText(QString("[%1]").arg(files.join(", ")));
? ? }
} 復制代碼
void Dialog::setSaveFileName()
{??//保存一個文件;
? ? QFileDialog::Options options;
? ? if (!native->isChecked())
? ?? ???options |= QFileDialog::DontUseNativeDialog;
? ? QString selectedFilter;
? ? QString fileName = QFileDialog::getSaveFileName(this,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???tr("QFileDialog::getSaveFileName()"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???saveFileNameLabel->text(),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???tr("All Files (*);;Text Files (*.txt)"),
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???&selectedFilter,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???options);
? ? if (!fileName.isEmpty())
? ?? ???saveFileNameLabel->setText(fileName);
} 復制代碼
==================================================================================================
From:?http://feizf.blogbus.com/logs/5112083.html
資料來源于Qt官方文檔,我總結了其中常用到的部分:
一.? 最簡單的方法是調用靜態函數來對話框獲取文件:
? QString?file = QFileDialog::getOpenFileName(
??????????????????? "/home/foxman",
??????????????????? "Images (*.png *.xpm *.jpg)",
??????????????????? this);
?????這斷代碼可以建立一個取文件對話框,選擇后OK將文件路徑返回給file.
?????????
二. 一般的文件對話框的使用
? QFileDialog *fd=new QFileDialog(this,"file dlg",TRUE);
??? if(fd->exec()==QFileDialog::Accepted) // ok
??? {
???????QString file=fd->selectedFile();
????? qWarning(s);
??? }
? 1. 幾個設定選項:
?? a. 設定顯示模式
??? ?fd->setViewMode( QFileDialog::Detail );
???? //Detail顯示 詳細的文件日期大小, List為一般情況
?? b. 設定過濾器
????? fd->setFilter( "Images (*.png *.xpm *.jpg)" );?
???? 下面是設定多個過濾器,一定要以;;隔開(兩個分號)
???? QString filters="C file(*.c *.cpp *.h);;pic(*.png *.xpm)";?
???? fd->setFilters(filters);
? c.? 設定對話框返回什么?
??? fd->setMode( QFileDialog::ExistingFile );?
????AnyFile(一般用于save as對話框)
?? ExistingFile存在的一個文件
?? ExistingFiles存在的0個或多個文件(可用于選擇多個文件)
?? Directory返回目錄
?? DirectoryOnly返回目錄(選取文件的時候只選中目錄)??
?
? 2. 返回值:
???? a. 返回選擇中的一個文件(夾)名字
??????? QString s=fd->selectedFile();?
???? b. 選取多個文件(一定要設定ExistingFiles模式)
???????? QStringList slist=fd->selectedFiles();????
???????? ????? for(QStringList::Iterator it=slist.begin();it!=slist.end();it++) //迭代器
???????????????? qWarning(*it);
附: 字符串列表QStringList使用方法
?1. 可以以append、+、<< 方式添加元素
????QStringList slist;
??? slist.append("string1");
??? slist += "string2";
??? slist << "string3" << "string4";
2.迭代器取得每一個變量值?
?????? for(QStringList::Iterator it=slist.begin();it!=slist.end();it++)? qWarning(*it);
3. 一種使用方式
??? QString s = "Red\tGreen\tBlue";
?????QStringList colors = QStringList::split( "\t", s );
?????cout << colors.join( ", " ) << endl;
?????輸出:?? Red, Green, Blue
總結
以上是生活随笔為你收集整理的Qt中的QFileDialog类的几个示范代码的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。