Qt 检测是否正在单击QPushButton

Qt 检测是否正在单击QPushButton,qt,events,user-interface,click,qwidget,Qt,Events,User Interface,Click,Qwidget,我试图从paintEvent()中找出按钮是否被按下,以便绘制“向下”状态。然而,我不知道在哪里可以找到这些信息。我尝试了QStyleOptionButton::state,但它无法判断按钮是否被单击。 debug语句的输出总是类似于“QStyle::State(“Active | Enabled | HasFocus | MouseOver”)”,因此与MouseDown状态无关 void XQPushButton::mousePressEvent(QMouseEvent* event) {

我试图从paintEvent()中找出按钮是否被按下,以便绘制“向下”状态。然而,我不知道在哪里可以找到这些信息。我尝试了QStyleOptionButton::state,但它无法判断按钮是否被单击。 debug语句的输出总是类似于“QStyle::State(“Active | Enabled | HasFocus | MouseOver”)”,因此与MouseDown状态无关

void XQPushButton::mousePressEvent(QMouseEvent* event) {
    QPushButton::mousePressEvent(event);

    QStyleOptionButton options;
    options.initFrom(this);
    qDebug() << (options.state);
}


void XQPushButton::paintEvent(QPaintEvent* event) {
    QPushButton::paintEvent(event);

    QStyleOptionButton options;
    options.initFrom(this);
    qDebug() << (options.state);
}
void XQPushButton::MousePresseEvent(QMouseEvent*事件){
QPushButton::MousePresseEvent(事件);
QSTYLEOPTION按钮选项;
选项。从(此)开始;

qDebug()
QPushButton
继承了
QAbstractButton
,它提供:

此属性用于保存按钮是否按下

QStyleOption
父类的文档包含:

void mybutdown::paintEvent(QPaintEvent*)
{
QSTYLEOPTION按钮选项;
选项.initFrom(this);
option.state=isDown()?QStyle::state_下沉:QStyle::state_上升;
//...
}
换句话说,沉没/升起状态不是由
initFrom()
初始化的。这有一定意义,因为
initFrom
是:

–通用的
QWidget
没有“凸起”或“凹陷”的概念

至少我是这样读文件的

void initFrom ( const QWidget * widget )