QWidget несколько стилей не работают правильно

Когда я пытаюсь установить несколько стилей для виджета, применяется только первый.

Я хочу удалить границу, которая появляется при наведении курсора на QToolButton, а также стрелку вниз из меню.

В основном кнопка содержит меню, которое устанавливает скорость анимации, например, видеоплеера.

Вот мой код:

ui->tool_speed_button->setStyleSheet("border: none; QToolButton::down-arrow {image: none;}");

Вот граница и стрелка вниз:

Мой QToolButton

Независимо от того, поместил ли я этот фрагмент кода в свой код или установил стиль непосредственно в Qt Designer, он по-прежнему будет применять только первый стиль в обоих случаях.

Как я могу применить оба стиля к одному и тому же объекту?

1 ответ

Если вы применяете стили к нескольким объектам или дочерним элементам в виджете, вам необходимо сгруппировать параметры с объектом, к которому вы хотите применить его.

В вашей строке таблицы стилей вы оставили "border: none;"болтаться, но также есть стиль для QToolButton, Вы можете сделать это, только если вы применяете стили только кtool_speed_button,

Попробуйте что-то вроде этого:

ui->tool_speed_button->setStyleSheet("QWidget{border: none; }QToolButton::down-arrow {image: none;}");

Вам нужно будет заменить Qwidgetс типомtool_speed_button, Когда вы запускаете проект в Qt, вы можете проверить таблицу стилей вашего MainWindow в файле конструктора, чтобы найти больше примеров того, как отформатировать таблицы стилей.

В вашем случае вы бы сделали это:

ui->tool_speed_button->setStyleSheet("QToolButton::down-arrow {border: none;image: none;}");

редактировать

Просто хотел добавить объяснение того, что означает первый пример таблицы стилей в моем ответе:

В строке стиля первая группа QWidget{border:none;} применяет стиль к любому QWidgetчто принадлежит tool_speed_button,

QToolButton::down-arrow {image: none;} применяет стиль только для любого QToolButton что принадлежит tool_speed_button а также имеет тип down-arrow(который является собственностью QToolButton). поскольку tool_speed_button этоQToolButtonСам он применяет стиль, указанный в фигурных скобках, к себе и всем своим детям.

Редактировать:

Я был неправ. Вы можете иметь атрибут свисающей таблицы стилей вместе без сгруппированных под фигурными скобками, как предполагает вопрос. Атрибуты свисания применяются только ко всем соответствующим объектам в виджете.

Другие вопросы по тегам