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
Сам он применяет стиль, указанный в фигурных скобках, к себе и всем своим детям.
Редактировать:
Я был неправ. Вы можете иметь атрибут свисающей таблицы стилей вместе без сгруппированных под фигурными скобками, как предполагает вопрос. Атрибуты свисания применяются только ко всем соответствующим объектам в виджете.