【问题标题】:How to simulate the cancel button pressing for QFileDialog?如何模拟 QFileDialog 的取消按钮按下?
【发布时间】:2014-04-27 10:26:28
【问题描述】:

如何模拟QFileDialog的取消按钮按下?

搜索在这里没有多大帮助,因为大多数线程(如 this one)都在讨论模拟 QT 应用程序的按键,而不是特别针对 QFileDialog。

P.S.:我想这样做是因为目前我正在使用其他人创建的库,代码在某种程度上依赖于 QFileDialog 来打开。如果每次都需要手动按取消按钮来进行用户交叉,这会变得非常烦人。

感谢任何帮助。

【问题讨论】:

  • 库是否使用静态方法,如QFileDialog::getOpenFileName 或QFileDialog 对象?你能获得QFileDialog指针吗?你能改变图书馆的代码吗?您想在显示后立即取消(或阻止显示)还是在显示后的任何时间取消?
  • @PavelStrakhov 我可以获得QFileDialog 指针并有权更改库代码。如果我可以在显示后随时取消对话框会更好。谢谢。

标签: qt button qt4 simulation qfiledialog


【解决方案1】:

我假设库使用QFileDialog,如文档中所示:

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
QStringList fileNames;
if (dialog.exec()) {
  fileNames = dialog.selectedFiles();
}

在这种情况下,您可以隐藏它。它会导致exec() 立即返回QDialog::Rejected:

fileDialog->hide();

【讨论】:

  • 您好 Pavel,感谢您的快速回复。但它对我不起作用,它仍然显示对话框而不自动关闭。对话调用函数getSaveFileName()有什么相关的吗?
  • getSaveFileName 是一个使用原生文件对话框的静态函数。我什至不确定QFileDialog 对象是在使用时创建的。至少在 Windows 上它会阻止事件循环,因此在对话框打开时我无法执行任何操作。我认为用这种对话做点什么是不可能的。如果您可以更改代码,则应将所有 QFileDialog 调用替换为自定义包装器,该包装器将按您的意愿运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多