切换QPushButton的开关状态
我有一个用PyQt做的应用程序,里面有几个按钮可以切换不同的模式。
我把按钮的点击信号连接到了相应的方法上。我的问题是,除了点击按钮,还有其他方法可以改变模式(比如,加载设置会自动把用户切换到默认模式),而我使用QPushButton来表示“当前活动模式”。之前我用每个按钮的两个图标来实现这个功能,一个是按钮关闭时的图标,另一个是按钮打开时的图标。这些都是在QtDesigner里设计的,所以点击一个按钮会把它打开(同时把其他按钮关闭),并且图标也会相应变化。当鼠标松开时,这个按钮会保持打开状态。
这个按钮会一直保持打开状态,直到按下另一个按钮。
我在想怎么能在用户没有实际按下按钮的情况下,把按钮从“打开”状态改为“关闭”状态,这样我就可以适当地切换模式。
Qt的文档提到了我想要的属性,但我找不到更多的细节,只知道这些状态是存在的:
最重要的模式或状态有:
可用或不可用(灰色显示,禁用)。
标准按钮、切换按钮或菜单按钮。
打开或关闭(仅适用于切换按钮)。
默认或正常。在对话框中,默认按钮通常可以用回车键“点击”。
是否自动重复。
是否被按下。
(http://qt-project.org/doc/qt-5/QPushButton.html)
更具体地说,我想找到一种方法来查看QPushButton的状态;看看它是“打开”还是“关闭”,并且我想找到一种方法来改变这个状态。
编辑:我找到了合适的方法QPushButton.isOn(),但问题是这个方法在Qt3里。(我用的是Qt5,这个方法不再存在了)。显然它现在已经过时了,有人知道它被什么替代了吗?http://doc.qt.digia.com/3.2/qpushbutton.html#isOn
1 个回答
QPushButton
是从 QAbstractButton
这个类继承来的,所以它有一些方法,比如 isChecked
、setChecked
、isCheckable
和 setCheckable
。这样一来,你就可以把按钮变成一个切换按钮,并且可以查看或设置它的状态。此外,还有 setAutoRepeat
和 autoRepeat
,这两个方法可以用来控制按钮的自动重复功能。
特别是,不要用 isOn
,而是用 isChecked
。
另外,QPushButton
还继承自 QWidget
,这个类有 isEnabled
和 setEnabled
这两个方法。通过这两个方法,你可以启用或禁用按钮,禁用时按钮会变灰,并且不允许点击。
总之,建议你查看一下 QAbstractButton 和 QWidget 的文档,这样你就能了解如何通过编程来启用或禁用 QPushButton
。