QFileDialog::getOpenFileNames() **原生支援多選**。若只能單選,通常是操作方式或平台細節問題。
QStringList files = QFileDialog::getOpenFileNames(
this,
tr("選擇一或多個檔案"),
QDir::homePath(),
tr("圖片 (*.png *.jpg);;所有檔案 (*)")
);
if (!files.isEmpty()) {
for (const QString &file : files) {
qDebug() << "選中:" << file;
// 處理每個檔案...
}
}
getOpenFileName() (單數) 與 getOpenFileNames() (複數): 前者回傳 QString (單選),後者回傳 QStringList (多選)。QFileDialog 物件模式 (setFileMode(QFileDialog::ExistingFiles)),確認已呼叫 setOption(QFileDialog::DontUseNativeDialog, false) (預設使用原生對話框,支援多選)。強制非原生對話框 (DontUseNativeDialog=true) 時,Qt 內建對話框同樣支援 Ctrl/Shift 多選。getOpenFileNames() 內部已正確設定 ExistingFiles 模式,無需額外配置。簡言之:**按住 Ctrl (或 Cmd) 點選即可多選**,程式碼無誤即為操作問題。