簡體   English   中英

如何使 QRadioButton 可點擊區域成為整個按鈕,而不僅僅是文本

[英]How to make QRadioButton clickable area the whole button instead of just on the text

如果這很重要,我正在使用 Maya 2018 中的 PySide2。 QRadioButton 僅在單擊文本區域時才會響應,即使按鈕的矩形更大。 可以單擊 QPushButton 矩形中的任何位置,它會做出響應。 在這方面,我可以讓 QRadioButton 像 QPushButton 一樣工作嗎?

從 QAbstractButton 繼承的每個按鈕,如 QPushButton 和 QRadioButton 都必須實現hitButton()方法,該方法指示 position 是否更改按鈕的 state。 因此,在 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_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM