C++ 在Qt中,当我使用css定义悬停图像时,它不起作用

C++ 在Qt中,当我使用css定义悬停图像时,它不起作用,c++,qt,C++,Qt,我有一个带有几个按钮的工具栏。它们触发显示模式,一次只能使用一种模式:激活模式1时,将禁用模式2、模式3等 当一种模式激活时,相应按钮上显示“激活图标”,所有其他按钮显示“未激活”图标。每个按钮都有不同的图标 现在,我希望当鼠标放在按钮上时图标会改变,以指示用户可以单击(基本上是一种悬停模式,主要是为了保持应用程序中的设计一致性) 这里是我到目前为止所做的,但它并没有像我预期的那样工作:悬停图标没有显示(我只是放了两个按钮来简化) 工具栏.h #ifndef工具栏\u H #定义工具栏 #包括

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

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

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

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

工具栏.h


#ifndef工具栏\u H
#定义工具栏
#包括
名称空间用户界面{
类工具栏;
}
类工具栏:公共QWidget
{
Q_对象
公众:
显式工具栏(QWidget*parent=nullptr);
专用插槽:
单击“模式1无效”按钮(布尔);
单击“模式无效”按钮(布尔);
私人:
Ui::工具栏*Ui;
};
#恩迪夫
toolbar.cpp

#包括“toolbar.h”
#包括“ui_toolbar.h”
工具栏::工具栏(QWidget*parent):QWidget(parent)
{
用户界面->设置用户界面(此);
用户界面->模式1按钮->设置对象名称(“模式1”);
用户界面->模式2按钮->设置对象名称(“模式2”);
在“模式1”按钮上单击(真);
}
无效工具栏::在模式1按钮上单击(布尔)
{
用户界面->模式1按钮->设置图标(QIcon(“icon1_activated.png”);
用户界面->模式按钮->设置图标(QIcon(“icon2.png”);
//做所有的事情来真正改变显示模式。。。
}
已单击“模式无效”按钮(布尔)
{
用户界面->模式按钮->设置图标(QIcon(“icon2_activated.png”);
用户界面->模式1按钮->设置图标(QIcon(“icon1.png”);
//做所有的事情来真正改变显示模式。。。
}
style.css

QPushButton#模式1,#模式2
{
背景色:无;
边界:无;
}
QPushButton#模式1:悬停
{
图片:url(icon1_hover.png);
}
QPushButton#模式2:悬停
{
图片:url(icon2_hover.png);
}

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

看一看:@duDE抱歉,但我不明白组合状态如何解决我的问题。你能举个例子吗?不,我不能。我只发现了一个看起来很有希望的例子。如果没有帮助,我很抱歉。尝试添加
ui->mode1Button->setAttribute(Qt::WA#u MouseTracking,true)输入到您的代码中。这应该能让Qt注意到光标何时实际位于按钮上方。@AlexanderZavert这是一个很好的建议,但它不起作用。看一看:@duDE抱歉,但我不明白组合状态如何解决我的问题。你能举个例子吗?不,我不能。我只发现了一个看起来很有希望的例子。如果没有帮助,我很抱歉。尝试添加
ui->mode1Button->setAttribute(Qt::WA#u MouseTracking,true)输入到您的代码中。这应该允许Qt注意到光标何时实际位于按钮上方。@AlexanderZavert这是一个很好的建议,但它不起作用。