问题标签 [qfiledialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
694 浏览

python - pyqt:如何在 QFileDialog 中获得对按钮的一致访问

我一直在为我的基于 PyQt 的项目开发一些调试/测试基础设施。我用特殊的调试属性标记了大多数小部件,即使小部件是在 C++ 端创建的。

但是,多次访问 a 中的同一个按钮QFileDialog似乎会产生的sip 包装器实例。也就是说,如果我多次访问“取消”按钮,PyQt 不会每次都返回相同的 Python 对象。

这是可用于重现该问题的最小测试程序:

希望这可以编程输出如下内容:

...但是,这就是我实际看到的。注意cancelButton对象每次的地址都不一样,而且我添加的调试属性丢失了:

所以看起来 PyQt 正在“丢失”它之前创建的 Python 对象,然后为每次重复访问创建一个“新”对象。这是预期的吗?

顺便说一句,此测试程序在 Mac OS X (10.7) 和 Linux (Ubuntu 12) 上的行为相同。我正在使用 PyQt 4.8.5。

0 投票
1 回答
507 浏览

c++ - 根据特定条件禁用/启用 QFileDialog 的选择按钮

我有一个 QFileDialog 提示用户选择一个目录。我正在运行 QT 版本 4.3.5。我也没有升级的选项。

我希望用户只能选择包含两个具有特定名称的文件的目录。如果它不包含这两个特定文件,则类似于禁用“选择”按钮。

我所做的搜索只是让我找到了过滤结果的方法,这不是我想要做的,因为用户需要能够浏览所有目录和所有子目录。如果选择了目录,则应根据上述标准检查是否禁用/启用“选择”按钮。

就像我说的,我发现的唯一半封闭解决方案在这个线程QFileDialog 中解释了具有某些内容的目录 或这个线程qfiledialog - Filtering Folders?

我的问题的这两个半解决方案都需要使用 QFileSystemModel,直到 QT 4.4 才引入。

如何根据所选/激活的目录是否包含两个特定文件来启用/禁用 QFileDialog::Directory 设置为 FileMode 的 QFileDialog 的“选择”按钮?

谢谢

0 投票
1 回答
384 浏览

qt - 非 QT 应用程序中的 QFileDialog

我有一个使用 3rd 方 GUI 框架的应用程序,但我想使用 QFileDialog 打开文件。我正在考虑实例化一个不可见的 QWidget 子类,用于提供对话框。

有一个更好的方法吗?

0 投票
1 回答
1912 浏览

python - 在 Python QT 的新窗口中打开一个目录

嗨,我想通过 python QT 代码打开一个新窗口。目前我正在尝试 QFileialog getOpenFileName 和 getExistingDirectory 但是它们都没有按预期工作。只需使用给定的路径打开一个新窗口。

0 投票
1 回答
568 浏览

c++ - Qt:隐藏 getSaveFileName 中的文件夹

我想在QFileDialog::getSaveFileName不允许选择路径或至少隐藏文件夹的情况下保存文件。阅读我试图设置QFileDialog::ShowDirsOnly为这样的选项的文档:

但它不起作用,或者这不是我想要的。

有没有一种方法可以保存文件而不能在系统中查找位置并QFileDialog::getSaveFileName请使用?或者我是否需要构建自己的 QFileDialog,我将在其中写入文件名?

我希望有人能理解我的问题。

0 投票
0 回答
994 浏览

qt - Qt 远程文件浏览器

我想知道是否有人使用过 Qt 远程文件浏览器。据我了解,我有两种选择;

  1. 当涉及到远程文件时,将 QFileDilaog 与自定义代理模型一起使用。该模型将负责提供远程文件/目录结构。
  2. 使用自定义对话框,并为本地文件提供标准文件系统模型,为远程文件提供自定义模型。

在这两种情况下,获取远程文件/目录列表的过程都可以使用 QNetworkAccess 管理器来完成。

有没有人研究过类似的概念,我是否朝着正确的方向前进?任何建议将不胜感激。

0 投票
0 回答
180 浏览

qt - Qt QFileDialog 文件被禁用

我正在创建一个 QFileDialog,但我无法选择任何文件。我可以选择文件夹,但不能选择文件。我正在使用 PyQt5,但可以轻松地在其他语言之间进行翻译,所以任何事情都有帮助。我的代码如下:

0 投票
0 回答
385 浏览

matplotlib - 调用 PyQt4.QFileDialog.getOpenFileNames() 后 PyPlot show() 真的很慢

对于分析应用程序,我正在尝试:

  1. 使用 PyQt4 QFileDialog 从用户那里获取文件名列表
  2. 从每个文件中提取一些数据
  3. 使用 pyplot 绘制聚合数据

但是,以这种方式获取文件名会导致 pyplot.show() 花费非常非常长的时间。我已将问题提炼为以下测试用例:

请注意,我什至没有对这里的文件名做任何事情——只是获取它们。

从对话框中选择单个文件会导致 10 秒的绘图时间。有趣的是,show() 完成所需的时间与所选文件的数量大致呈线性关系。对于 10 个文件,图表显示大约需要 67 秒。

对于从少数文件中绘制数据来说,这并不是什么大问题,但是当汇总来自有数千个文件的 Monte Carlo 模拟的数据时,绘图可能需要数小时才能显示出来。告诉 matplotlib 使用 Qt4Agg 后端会导致相同的行为。

如果我注释掉对 getOpenFileNames 的调用,脚本将在一秒钟内完成。

我正在运行以下版本的相关软件包(应该是最新的):

  • 蟒蛇 2.7
  • matplotlib 1.3.1
  • python-sip 4.13.2-1
  • python-qt4 4.9.1-2ubuntu1
  • python-sip-dev 4.13.2-1
  • python-qt4-dev 4.9.1-2ubuntu1

我卸载了 sip、qt4 并重新安装了它们——同样的问题。我已经在两台不同的机器上看到了这个问题——它们都运行 32 位 Ubuntu 12.04。

任何帮助将不胜感激 - 我浪费了令人尴尬的时间等待情节显示。


更新:

  • 所选文件的类型和名称似乎无关紧要。
  • 取消或退出文件对话框不会导致延迟并立即打印。
  • 以 sudo 运行脚本可以解决这个问题;但是,当我以 sudo 运行时,文件对话框看起来不同,并且可能使用了不同的 gui 后端,这与 pyplot 对 PyQt 的使用不冲突,因此可能是一个红鲱鱼。
  • 该程序不会在 getOpenFileNames 中挂起,它会在使用 PyQt 的下一个调用中挂起。无论是绘图还是另一个文件对话框似乎都无关紧要 - 第一个文件对话框会阻止两者。
  • 运行对话框后调用 app.processEvents() 没有帮助。
  • 使用 PySide 代替 PyQt4 会导致相同的行为。
  • 使用 getOpenFileName 而不是 getOpenFileNames 会导致相同的行为。
  • 使用 DontUseNativeDialog 选项运行 getOpenFileNames 有效(无延迟)
  • 其他 QFileDialog 选项都没有任何效果(ShowDirsOnly、DontResolveSymlinks、DontConfirmOverwrite、ReadOnly、HideNameFilterDetails、DontUseSheet)
0 投票
2 回答
9238 浏览

python - 我尝试使用 QFileDialog 在 PyQt 上选择一个文件,但它不运行

我是stackoverflow的新手。我在 PyQt 上有一个 MainWindow,我想单击一个按钮并打开一个 QFileDialog 来选择一个文件。问题是:如果我使用 MainWindow,QFileDialog 不会运行。如果我使用 Dialog,QFileDialog 运行。

这是我的 MainWindow 代码。

这是对话框的代码。在这里,我使用 pyuic4 (QTDesigner) 在 .py 生成中编写代码

这是 Vannucci_Gemignani.py:

0 投票
2 回答
394 浏览

c++ - QFileDialog 不显示假脱机文件夹

我要求用户使用 QFileDialog 选择一个文件夹:

我希望用户能够选择所有文件夹,但是在 QFileDialog 中找不到 C:/Windows/System32/spool/,我怀疑可能还有其他文件夹。

我曾尝试设置标志QFileDialog::HideNameFilterDetails以查看隐藏文件,但这并不能解决问题。

这个问题有解决方案吗?

C:/Windows/System 32/spool 在 QFileDialog 中不存在

在此处输入图像描述