我在Qt中有一个保存文件的QFileDialog。
这不是在破坏信号。我通过QFileDialog diag(这个)连接;.
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);但还是没有结果。
更新
发现使用操作系统本机对话框(我在Linux下,不知道在其他操作系统中是否会发生这种情况)会造成问题。如果我做了
dialog->setOption(QFileDialog::DontUseNativeDialog, true);信号发射了。我怎么才能解决这个问题?
发布于 2016-05-30 18:54:57
您的平台上的本机对话框不会通知用户过滤器的更改,所以Qt没有什么可以发出信号的--使用这个特定的本机对话框是不可能的。或者,所需的功能没有在Qt中实现。此行为是特定于平台的。它至少能在Windows上工作。
发布于 2016-05-30 15:57:10
尝试设置这样的插槽/信号:
connect(
dialog, SIGNAL(filterSelected(QString)),
this, SLOT(saveAsDiagFilterSelected(QString)),
Qt::QueuedConnection);https://stackoverflow.com/questions/37529397
复制相似问题