내가 허용 신호가 발사되어 내 QFileDialog에서 파일을 선택하고 창을 닫을 때마다. 나는 그래서 여러 파일
모든 다른 답변 선택 여러 파일을 한 번하고 Open
버튼을 누른 후 CLOSE
창 바로 솔루션입니다를 선택할 수 있습니다 열려있는 창을 유지하려면. 내 솔루션을 얻을, 그것은 많은 작업이 필요하기 때문에 매우 간단하지 않다 : 내 대답에 람다 표현식과 새로운 신호와 슬롯 구문을 사용
을,하지만 당신은 오래된 구문을 사용하거나
CONFIG += c++11
을 추가 할 수 있습니다 .pro 파일을 사용하고 lambdas를 사용하십시오.
서브 클래스 QFileDialog :
헤더 :
#ifndef CUSTOMFILEDIALOG_H
#define CUSTOMFILEDIALOG_H
#include <QFileDialog>
#include <QDebug>
class CustomFileDialog : public QFileDialog
{
Q_OBJECT
public:
explicit CustomFileDialog(QWidget *parent = 0);
void setDefaultGeo(QRect);
signals:
void newPathAvailable(QStringList list);
public slots:
private:
bool openClicked;
QRect geo;
};
#endif // CUSTOMFILEDIALOG_H
당신이 열기를 클릭하면, 당신이 당신의 대화를 숨기 닫을 수 없습니다!CPP :
#include "customfiledialog.h"
CustomFileDialog::CustomFileDialog(QWidget *parent) :
QFileDialog(parent)
{
openClicked = false;
connect(this,&QFileDialog::accepted,[=]() {
openClicked = true;
qDebug() << openClicked;
this->setGeometry(geo);
this->show();
emit newPathAvailable(this->selectedFiles());
});
}
void CustomFileDialog::setDefaultGeo(QRect rect)
{
geo = rect;
}
사용법 :
CustomFileDialog *dialog = new CustomFileDialog;
QStringList fileNames;
dialog->setFileMode(QFileDialog::ExistingFiles);
dialog->show();
dialog->setDefaultGeo(dialog->geometry());
connect(dialog,&CustomFileDialog::newPathAvailable,[=](QStringList path) {
qDebug() << path;
});
왜 setDefaultGeo
이 필요합니까? 이 방법을 사용하지 않으면 Open
을 누른 후 창이 움직입니다.
어떤 결과가 나옵니까?
나는 FileDialog를 열고 선택 두 개의 파일을 :
내가 열기를 클릭하지만 창이 닫히지 않았다! 새 파일을 몇 번이고 다시 선택할 수 있습니다!
하나 개 이상의 파일 등 :
창은 경우에만 사용자를 눌러 닫기 버튼을 폐쇄되지만 사용자가 선택할 수있는 모든 경로를해야합니다.
당신이 말했듯이 :
내가 그래서 여러 파일
를 선택할 수 있습니다 열려있는 창을 유지하려면 당신이 얻을.
내가 같은 문제가 있었다 ...
선택 사항이 변경되면 바로 실행되는 신호는 신경 쓰지 않습니다. '열기'를 명시 적으로 클릭하면 발생하는 일만 신경 씁니다. – Kvass
QStringList 파일 이름 = QFileDialog :: getOpenFileNames 사용할 수 있습니다 (이 "파일 열기"); 선택한 모든 파일 목록을 가져 오지 만 질문에 답변하지 않습니다. –
사용자가 하나의 파일을 선택하고 열기를 클릭하고이 파일을 추가하고 창을 열고 사용자가 다음 파일을 선택하도록하고 싶습니다. 열기를 클릭하고 마지막으로 사용자가 닫기를 클릭하면 창이 닫힙니 까? – Chernobyl