我的问题是,当我将QFileDialog添加到QVBoxLayout时,它会在新窗口中打开。下面是产生我的问题的代码。在
from PyQt5.QtWidgets import QVBoxLayout, QFileDialog, QPushButton, QWidget
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("My own MainWindow")
self.fileDialog = QFileDialog()
self.confirmAction = QPushButton("Press me", self)
mainLayout = QVBoxLayout()
mainLayout.addWidget(self.fileDialog)
mainLayout.addWidget(self.confirmAction)
self.setLayout(mainLayout)
我自己也一直在调查这个问题,对“只使用非本机对话”一点不满意。我一直在KDE平台文件对话框实现中进行黑客攻击,并且已经(卡住)了我想要的东西。在
我发现的唯一附加点是在对话框实际显示之前;在此之前,似乎没有办法知道实际的父窗口小部件。但我们可以:
故障: -对话框可能以2组“确定/取消”等按钮结束 -如果不是,这些按钮实际上可能只关闭嵌入的QFD,而不是封闭的对话框(见上面链接的python示例) -调整大小有效,但saveSize/restoreSize机制不起作用 -所有信号都没有正确连接(Scribus打开文件对话框中的预览对选择文件没有反应)。不过,打开文件确实管用。在
此BKO票据的完整补丁: https://bugs.kde.org/show_bug.cgi?id=404833#c15
显然,这只对黑客和可以发布自己的平台主题插件(KDE平台文件对话框的来源)的软件有用。幸运的是,这些插件往往相对较小。在
根据docs:
因此,这些标志用于改变小部件的行为,例如将其转换为窗口、对话框、工具提示等。在
在docs中给出了以下列表:
在您的例子中,我们必须将
Qt::Dialog
的行为更改为Qt::Widget
,在下面的代码中,我展示了执行此操作的代码:截图:
相关问题 更多 >
编程相关推荐