2013-03-21 36 views
10

setNameFilters không được làm việc như tôi mong chờ, vì vậy nếu có ai có thể giải thích nếu tôi đang sử dụng nó không đúng cách, hoặc nếu có lẽ đây là một lỗi trong Qt:QDir.setNameFilter cách chỉ hiển thị các tệp có tiện ích mở rộng cụ thể?

Đây là mẫu mã của tôi:

QDir export_folder("C:\path"); 
QStringList fileList = export_folder.setNameFilters(QStringList()<<"*.exe"); 

sau khi xử lý tệpList chứa chuỗi "test.exe1"

Tôi mong đợi tệp danh sách chỉ bao gồm các tệp có phần mở rộng .exe NOT .exe *.

Nếu tôi muốn phần mở rộng tệp dài hơn .exe, tôi mong đợi đặt trong "*.exe*" làm bộ lọc của mình.

Ai đó có thể giúp làm rõ hoặc tôi có phải xử lý danh sách tệp của mình theo cách thủ công sau khi thực tế không?

Trả lời

13

Để bắt đầu, setNameFilters không trả về QStringList, nó sẽ không trả về gì cả. Mã của bạn sẽ trông giống như sau:

QDir export_folder("C:\\path"); 
export_folder.setNameFilters(QStringList()<<"*.exe"); 
QStringList fileList = export_folder.entryList(); 

Lọc hoạt động như mong đợi (không trả lại tệp kết thúc bằng "exe2") trong Linux với Qt 5.0.1.

+0

Nếu tôi muốn hiển thị cả .mp3 và .wav, cách thực hiện? Cảm ơn – Casper

2

Ngoài ra, nếu bạn muốn hiển thị các tệp có nhiều loại tiện ích, bạn có thể thực hiện như sau.

export_folder.setNameFilters(QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg"); 
Các vấn đề liên quan