gpt4 book ai didi

c++ - QFileDialog 不发出信号

转载 作者:行者123 更新时间:2023-11-30 02:31:32 29 4
gpt4 key购买 nike

我在 Qt 中有一个用于保存文件的 QFileDialog。

它不是 smmiting 信号。我通过连接它 QFileDialog diag(this); ...

connect(
dialog, SIGNAL(filterSelected(const QString&)),
this, SLOT(saveAsDiagFilterSelected(const QString&)),
Qt::QueuedConnection);

然后用exec()调用它。 saveAsDiagFilterSelected 从未被调用。

可能出了什么问题?


这就是我创建对话框的方式:

dialog = new QFileDialog(this);
dialog->setFileMode(QFileDialog::AnyFile);
dialog->setNameFilters(filterList);
dialog->setAcceptMode(QFileDialog::AcceptSave);
dialog->setWindowTitle(windowTitle);

我尝试实现新的信号 API(如评论中所建议):

connect(
dialog, &QFileDialog::filterSelected,
this, &MainWindow::saveAsDiagFilterSelected);

还是没有结果。


更新

发现使用操作系统 native 对话框(我在 Linux 下,不知道这是否发生在其他 SO 中)正在造成问题。如果我这样做

dialog->setOption(QFileDialog::DontUseNativeDialog, true);

信号发出。我该如何解决这个问题?

最佳答案

您平台上的 native 对话框不会通知用户有关过滤器更改的信息,因此 Qt 无法发出任何信号 - 特定的 native 对话框是不可能的。或者 Qt 中可能没有实现必要的功能。此行为是特定于平台的。它至少适用于 Windows。

关于c++ - QFileDialog 不发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529397/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com