如何检查QWidget是否已显示?
我正在用PyQt4为一个现有的应用程序开发一个插件界面。这个窗口是在主窗口里按下一个按钮后,通过uic.loadUi()创建的。问题是,如果我在窗口显示的时候再次按这个按钮,窗口会被重新创建,这样未保存的更改就会丢失。我不想让这个窗口变成模态窗口。那么,我有什么办法来解决这个问题呢?我想这可能和检查QWidget是否已经在显示有关。
2 个回答
0
我本以为这个问题应该更多地由你的应用程序逻辑来处理,而不是其他的。主窗口在按钮被点击后应该禁用这个按钮,然后在窗口关闭时再重新启用它。你可以把第二个窗口的关闭信号连接到主窗口的一个槽,这样当第二个窗口关闭时,主窗口就能收到通知。
2
你应该把指向QWidget的指针(成员变量)初始化为0。
当按钮被按下时,检查这个指针是否为0。如果是0,就加载并显示这个小部件,然后把指针指向新创建的小部件。如果指针不是空的,按下按钮时就调用 widget->raise()
和 widget->activateWindow()
。
禁用的按钮会让用户感到沮丧,像是那些看起来没有任何反应的按钮,因为它们的效果可能被隐藏了。