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