QTreeWidgetItem要取得上一層的item text可用parent()這個函式,下面寫了好幾個方法都可取得,若要從目前這層取得到最上層只要一直parent(),用迴圈,讓後判斷是否是最上層既可,若是檔案tree,就能取得full path.
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem* item, int column)
{
QString str1 = item->text(1); //取得第2欄text
QString str0 = item->text(0); //取得第1欄text
//QString str0 = ui->treeWidget->selectedItems().value(0)->text(0);//取得第1欄text
//QString str0 = ui->treeWidget->currentItem()->text(0); //取得第1欄text
//QString key = ui->treeWidget->currentItem()->parent()->text(0);//取得上層第1欄text
QString key = item->parent()->text(0);//取得上層第1欄text
QDir dir;
QString str2 = dir.filePath(key);
ui->listWidget->addItem(key); //把字串加到listWidget
}
下面就是一個取得檔案tree的full path,當我doubleclick,就能獲得item的檔案路徑.
QFileInfo fileInfo("/home/yplin66/qt");我是從qt目錄開展開.
只要判斷取得item text是否等於"qt",就應該終止迴圈,每取得一次text,就加到前面去,最後就是整個路徑了.
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem* item, int column)
{
//QString str1 = item->text(1); //取得第2欄text
//QString str0 = item->text(0); //取得第1欄text
//QString str0 = ui->treeWidget->selectedItems().value(0)->text(0);//取得第1欄text
//QString str0 = ui->treeWidget->currentItem()->text(0);//取得第1欄text
//QString key = ui->treeWidget->currentItem()->parent()->text(0);//取得上層第1欄text
QString key; //QTreeWidgetItem item text
QString full_path; //檔案路徑
key = item->text(0);
full_path=key+"/";
while (key != "qt")
{
item=item->parent(); //取得上1層item
key = item->text(0); //取得上1層第1欄text
full_path=key+"/"+full_path;
}
ui->listWidget->addItem(full_path); //把字串加到listWidget
}
執行結果:(當然我最終是要獲得目錄下,所有檔案,加到list上,待續..)
終於寫完了,double click會把目錄下的檔案加到右邊的listWidget.(再來就來寫撥放音樂檔案)
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem* item, int column)
{
//QString str1 = item->text(1); //取得第2欄text
//QString str0 = item->text(0); //取得第1欄text
//QString str0 = ui->treeWidget->selectedItems().value(0)->text(0);//取得第1欄text
//QString str0 = ui->treeWidget->currentItem()->text(0);//取得第1欄text
//QString key = ui->treeWidget->currentItem()->parent()->text(0);//取得上層第1欄text
QString key; //QTreeWidgetItem item text
QString full_path; //檔案路徑
key = item->text(0);
full_path=key+"/";
while (key != "qt")
{
item=item->parent(); //取得上1層item
key = item->text(0); //取得上1層第1欄text
full_path=key+"/"+full_path;
}
full_path="/home/yplin66/"+full_path;
QDir dir;
dir.setPath(full_path); //設到指定path
dir.setFilter(QDir::Files | QDir::NoSymLinks); //過濾檔案,目錄去掉
const QFileInfoList fileList = dir.entryInfoList(); //檔案資訊List
QFileInfo fileInfo(full_path);
QStringList fileColumn;
for (int i = 2; i < fileList.size(); i++) //0,1指. , ..故略過,一直到幾個檔案為止
{
fileInfo = fileList.at(i); //取得檔名
fileColumn.append(fileInfo.fileName()); //把檔名加到QStringList
;
}
ui->listWidget->clear();
ui->listWidget->addItems(fileColumn);//把QStringList加到listWidget
//ui->listWidget->addItem(full_path); //把字串加到listWidget
}
執行結果:
2009年6月14日 星期日
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言