首页 > 解决方案 > 在 Qt 中,当我使用 css 定义悬停图像时,它不起作用

问题描述

我有一个带有几个 QPushButton 的工具栏。它们触发显示模式,并且一次只能使用一种模式:激活模式 1 时,模式 2、模式 3 等将被禁用。

当一种模式被激活时,相应的按钮上会显示一个“激活的图标”,而所有其他按钮都显示一个“未激活”的图标。每个按钮都有不同的图标。

现在,我希望当鼠标悬停在按钮上时更改图标以指示用户可以单击(基本上是悬停模式,主要是为了保持我们应用程序的设计一致性)。

这是我到目前为止所做的,但它并没有像我预期的那样工作:悬停图标没有显示(我只是放了 2 个按钮来简化)。

工具栏.h


#ifndef TOOLBAR_H
#define TOOLBAR_H

#include <QWidget>

namespace Ui {
    class Toolbar;
}

class Toolbar : public QWidget
{
   Q_OBJECT

public:
    explicit Toolbar(QWidget *parent = nullptr);

private slots:
    void on_mode1button_clicked(bool);
    void on_mode2button_clicked(bool);

private:
   Ui::Toolbar * ui;
};

#endif

工具栏.cpp

#include "toolbar.h"
#include "ui_toolbar.h"

Toolbar::Toolbar(QWidget *parent) : QWidget(parent)
{
    ui->setupUi(this);

    ui->mode1Button->setObjectName("mode1");
    ui->mode2Button->setObjectName("mode2");
    on_mode1button_clicked(true);
}

void Toolbar::on_mode1button_clicked(bool)
{
    ui->mode1button->setIcon(QIcon("icon1_activated.png"));
    ui->mode2button->setIcon(QIcon("icon2.png"));
    // do all the stuff to actually change the display mode...
}

void on_mode2button_clicked(bool)
{
    ui->mode2button->setIcon(QIcon("icon2_activated.png"));
    ui->mode1button->setIcon(QIcon("icon1.png"));
    // do all the stuff to actually change the display mode...
}

样式.css

QPushButton#mode1, #mode2
{
    background-color: none;
    border:none;
}

QPushButton#mode1:hover
{
    image: url(icon1_hover.png);
}

QPushButton#mode2:hover
{
    image: url(icon2_hover.png);
}

鼠标悬停时不显示悬停图标,我不明白我做错了什么。是否可以仅使用 css 解决此问题?

标签: c++qt

解决方案


推荐阅读