QPushButton点击之后长亮 再次点击灭
时间: 2024-05-02 18:02:49 浏览: 18
您可以通过设置QPushButton的样式表来实现这个效果。具体步骤如下:
1. 在QPushButton的构造函数中设置样式表:
```
QPushButton::pressed {
background-color: yellow;
}
QPushButton::checked {
background-color: green;
}
```
2. 将QPushButton的checkable属性设置为true,这样点击之后就会进入checked状态。
3. 在QPushButton的clicked信号中判断当前状态,如果是checked状态就将其设置为unchecked状态,否则设置为checked状态。
完整代码如下:
```
QPushButton *button = new QPushButton("Button");
button->setCheckable(true);
connect(button, &QPushButton::clicked, [=](){
if (button->isChecked()) {
button->setChecked(false);
} else {
button->setChecked(true);
}
});
button->show();
```
这样,当您点击按钮时,它会变成黄色,并且在长按时保持黄色状态。再次点击它,它会变成绿色,再次点击它,它会回到黄色状态。
相关问题
qpushbutton 点击之后有虚线框
这个虚线框是指 QPushButton 被选中时显示的背景框,一般用于键盘操作。如果您希望去掉这个虚线框,可以使用以下代码:
```cpp
button->setAttribute(Qt::WA_MacShowFocusRect, false); // macOS
button->setAttribute(Qt::WA_TranslucentBackground, true); // Windows
button->setFocusPolicy(Qt::NoFocus); // Linux
```
其中,`setAttribute(Qt::WA_MacShowFocusRect, false)` 可以在 macOS 上去掉虚线框,`setAttribute(Qt::WA_TranslucentBackground, true)` 可以在 Windows 上去掉虚线框,`setFocusPolicy(Qt::NoFocus)` 可以在 Linux 上去掉虚线框。您可以根据您的应用程序平台选择适合您的代码。
QPushButton长亮
要让QPushButton长亮,可以通过设置样式表来实现。样式表是Qt中一种灵活的方式,可以通过CSS类似的语法来定义控件的外观和行为。
以下是实现长亮效果的示例代码:
```python
button.setStyleSheet("QPushButton { background-color: yellow; } QPushButton:pressed { background-color: red; }")
```
这个样式表将QPushButton的背景颜色设置为黄色。当按钮被按下时,背景颜色变为红色。如果你想让按钮一直处于长亮状态,可以省略`:pressed`伪类。
如果你希望按钮在长亮状态下不可点击,可以将按钮的`setEnabled()`方法设置为False,这样就无法触发按钮的点击事件了。