[英]QFileDialog does not emit signals
我在Qt中有一個用於保存文件的QFileDialog。
這不是模糊的信號。 我通過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);
但仍然沒有結果。
更新
發現使用OS本機對話框(我在Linux下,不知道這是否發生在其他SO中),正在創建問題。 如果我做
dialog->setOption(QFileDialog::DontUseNativeDialog, true);
信號被發出。 我該如何解決這個問題?
平台上的本機對話框不會告知用戶有關過濾器更改的信息,因此Qt無需發出信號 - 這種特定的本機對話框無法實現。 或者也許在Qt中沒有實現必要的功能。 此行為是特定於平台的。 它至少適用於Windows。
嘗試像這樣設置插槽/信號:
connect(
dialog, SIGNAL(filterSelected(QString)),
this, SLOT(saveAsDiagFilterSelected(QString)),
Qt::QueuedConnection);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.