簡體   English   中英

QFileDialog不發出信號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM