Я новичок в QT и у меня возникают проблемы при вызове QFileDialog из дочернего окна.Мое приложение относительно простое.У меня есть один быстрый виджет, который получает пользовательский ввод, а затем запускает шоу на его родителя.Это мой главный.
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
ParentWidjet w(nullptr);
ChildWidget input(&w);
input.show();
return a.exec();
}
Это соответствующий раздел дочернего виджета:
ChildWidget::ChildWidget(QWidget *parent) :
QDialog(parent),
ui(new Ui::InputPrompt){
ui->setupUi(this);
this->setParent(parent);
}
...
void ChildWidget::on_imagesSelect_clicked() {
inputFilepath = QFileDialog::getExistingDirectory(static_cast<ParentWidget *>(this->parent()), QCoreApplication::translate("main", "Open directory"), "./", QFileDialog::ShowDirsOnly);
ui->inputPath->setPlainText(inputFilepath);
std::cout << "y u exit" << std::endl;
}
//Setup and show the parent
void ChildWidget::on_buttonBox_accepted() {
static_cast<ParentWidjet *>(this->parent())->setup(inputFilepath, outputFilepath);
static_cast<ParentWidjet *>(this->parent())->show();
}
По какой-то причине, когда вызывается QFileDialog
, закрыв его либо OK
или Cancel
закрывает как родителя, так и ребенка.Если я не использую его, но нажимаю кнопку «ОК» дочернего элемента, который вызывает функцию on_buttonBox_accepted()
, дочерний элемент закрывается, и родительский виджет отображается, как и ожидалось.Если я не передам родительский виджет дочернему виджету в основном, QFileDialog
больше не закрывает дочерний виджет при запуске.Я попытался изменить родителя QFileDialog на this
или nullptr
, но это не помогло.
Я думаю, мой вопрос похож на QFileDialog закрывает окно при вызове
или PyQt5 QFileDialog завершает приложение при вызове из дочернего окна
Но я не могу извлечь из них решение, которое работает для меня.