В Qt, когда я определяю наведенное изображение с помощью css, оно не работает - PullRequest
1 голос
/ 25 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...