У меня есть панель инструментов с несколькими 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
toolbar.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...
}
style.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?