Qt设置按钮背景为图片,点击是外圈出现金色
时间: 2024-09-23 15:09:53 浏览: 58
Qt 单选按钮 QButtonGroup 设置背景图片以及去掉小圆点
在Qt中,如果你想让QPushButton的背景显示图片并且在点击时外圈出现金色效果,你可以这样做:
1. 首先,设置按钮的背景图片:
```cpp
QPushButton *button = new QPushButton(); // 创建一个QPushButton实例
QPixmap pixmap("path_to_your_image.jpg"); // 替换为你的图片路径
button->setIconSize(pixmap.size()); // 确保图标大小与图片一致
button->setStyleSheet("background-image: url(:/image_path/" + pixmap.fileName() + ");");
```
这里假设图片放在资源文件夹`:/image_path/`下。
2. 接着,为了在鼠标按下时显示金色边框,我们可以重载QPushButton的鼠标事件处理函数`mousePressEvent()`:
```cpp
void button::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
QPalette palette = palette();
palette.setBrush(QPalette::Window, Qt::NoBrush);
palette.setColor(QPalette::Window, QColor(0, 0, 0, 60)); // 黑色半透明
setAutoFillBackground(true);
update();
QPen pen(Qt::gold, 2); // 创建金边笔,宽度2像素
QPainterPath path(button->rect());
path.addRect(event->pos(), event->pos() + QSize(2, 2)); // 只画点击位置的边框
QPainter painter(this);
painter.setPen(pen);
painter.drawPath(path);
QTimer::singleShot(50, [this] { // 50毫秒后恢复原样
restoreCursor(); // 恢复默认光标
resetStyle();
});
}
QWidget::mousePressEvent(event);
}
```
这个例子中,当左键按下时,会临时将背景变为黑色半透明,然后在点击位置画出金色边框,50毫秒后自动恢复原始样式。
阅读全文