【问题标题】:QPushbutton states transition: lacking "pressed" stateQPushbutton 状态转换:缺少“按下”状态
【发布时间】:2016-11-15 22:49:48
【问题描述】:

我有一个关于 QPushbutton 状态转换的问题。

我从 QPushButton 派生了一个类,比如 MyQPushButton。 为此,我通过样式表设置了一些视觉属性:

Qt 代码: 切换视图

MyQPushButton
{
background-color: transparent;
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_a.png);
}

MyQPushButton:pressed {
background-color: transparent;
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_b.png);
}

MyQPushButton:disabled {
background-color: transparent;
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_d.png);
}

MyQPushButton:checked {
background-color: transparent;
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_c.png);
}

要复制到剪贴板,请将视图切换到纯文本模式

与可检查的 MyQPushButton 实例交互时,图像“MyQPushButton_b”(按下状态)仅通过在未选中状态下单击它才会出现一段时间,在从未选中到选中的转换过程中。 我希望看到相同的图像一段时间,也可以通过在检查状态(反向转换)上单击它来报告文档http://doc.qt.io/qt-5/qabstractbutton.html

"当用户单击一个切换按钮进行选中时,该按钮首先被按下然后释放到选中状态。当用户再次单击它(取消选中)时,按钮首先移动到按下状态,然后到未检查状态。”

我的解释错了吗? 相反,我如何“强制”在选中-未选中转换期间显示按下状态对应的图像?

谢谢!!!

红外

【问题讨论】:

    标签: qt qpushbutton


    【解决方案1】:

    pressed 更改为down。但是,The down property 涵盖了按下和选中状态,因此请确保您的样式表完全覆盖 down 所做的外观更改(它已经这样做了,但这只是一个注意事项)。

    文档所指的“按下”状态是一个非实体,指的是按钮“按下”但未“选中”。这相当于以下内容:

    if (button.isDown() && !button.isChecked())
        ...
    

    深入代码显示此测试在内部与QPushButton::initStyleOption() 一起使用。

    【讨论】:

    • 嗨乔恩,非常感谢您的提示!仅通过在样式表中将“按下”替换为“向下”(如果我对您的解释很好),我并没有立即解决我的问题。但是,我确定我可以解决您的提示...例如,通过在可检查的 MyQPushButton 实例上安装事件过滤器并检查您建议的 isDown() 属性!即将发布的消息...
    • 由于按钮是可检查的,您可以尝试在 CSS 中将“关闭”状态 置于“已检查”之后。 @ilariari
    • 不可能也引入一个新的 CSS 项:MyQPushButton:checked[down = "true"] {... }
    • @ilariari 我的意思是将“向下”样式块移动到“已检查”样式块之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多