如果这很重要,我正在使用 Maya 2018 中的 PySide2。QRadioButton 仅在单击文本区域时才会响应,即使按钮的矩形更大。可以单击 QPushButton 矩形中的任何位置,它会做出响应。在这方面,我可以让 QRadioButton 像 QPushButton 一样工作吗?
问问题
82 次
1 回答
1
从 QAbstractButton 继承的每个按钮,如 QPushButton 和 QRadioButton 都必须实现hitButton()
指示位置是否更改按钮状态的方法。因此,在 QPushButton 的情况下,它将其所有几何图形作为参考,而 QRadioButton 将文本 + 半径作为参考。解决方案是覆盖该方法,使其具有所需的行为:
import os
import sys
from PySide2 import QtCore, QtWidgets
class CustomRadioButton(QtWidgets.QRadioButton):
def hitButton(self, pos):
return self.rect().contains(pos)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
lay = QtWidgets.QVBoxLayout(w)
for i in range(4):
btn = QtWidgets.QRadioButton(f"QRadioButton-{i}")
lay.addWidget(btn)
for j in range(4):
btn = CustomRadioButton(f"CustomRadioButton-{i}")
lay.addWidget(btn)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())
于 2020-06-12T23:15:30.953 回答