如何检查一个QWidget是否已经显示?

3

我正在使用PyQt4为现有应用程序开发插件UI。按下主窗口中的按钮时,使用uic.loadUi()创建窗口。问题是,如果在窗口显示时再次按下按钮,则会重新创建窗口并且未保存的更改将丢失。我不想使窗口模态。我有哪些选项来解决这个问题?我猜这可能与检查QWidget是否已经显示有关。

2个回答

2

你需要将QWidget(成员变量)的指针初始化为0。

当按钮按下时,检查指针是否为0——如果是,则加载并显示小部件,并将指针变量分配为指向新小部件。如果在按钮按下时指针不为null,则调用widget->raise()widget->activateWindow()

禁用按钮可能会令用户感到沮丧,无法了解按钮的效果也会让他们感到困惑。


太好了!只要注意在PyQt中这个函数被称为raise_()。 - underdark

0
我认为这应该更多地由您的应用程序逻辑处理。主窗口应在按钮被单击后禁用它,然后在窗口关闭时再次启用它。将次要窗口上的关闭信号连接到主窗口上的插槽,以便在次要窗口关闭时通知主窗口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接