Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
11 Replies to “Глава 26 – Элементы со стилем”
Здравствуйте, Макс!
На стр. 372 в предпоследнем абзаце Вы пишите: “Класс QStyle имеет только одного потомка – класс QCommonStyle…”, а на рис.26.1. “Иерархия классов стилей” указано два класса потомка: QCommonStyle и QProxyStyle. Поясните, пожалуйста, этот момент.
Здравствуйте, Вячеслав!
Тут имеется ввиду прямой “потомок” (класс QCommonStyle), который непосрественно унаследован от класса QStyle. Класс QProxyStyle уже наследуется от QCommonStyle.
Макс, на странице 376 в листинге 26.4 в конце не помешает добавить строчку “QApplication::setStyle(pcbo->currentText());”, чтобы при запуске приложения стиль становился таким, который отображается в комбо-бокс (pcbo) при появлении окна приложения.
Здравствуйте, Макс!
В разделе “Использование каскадных стилей документа” Вы создаете стиль виджета с тремя кнопками (листинги 26.11-26.16). В файле стилей simple.qss почему-то не создается (не работает в прилжении) нужный стиль для состояния QPushButton:checked, и соответственно для QPushButton:checked:hover (листинги 26.15, 26.16). Как я полагаю применяется какой-то стандартный. Т.е. если убрать или закомментировать эти состояния в файле simple.qss ничего не меняется (с другими состояниями все работает). Не могу понять почему так? Может версия Qt 5.11 не поддерживает состояние checked в стилях для QPushButton?
P.S.: для проверки состояния checked переключаю фокус TAB-ом, кнопки при этом немного светлеют (становятся сероватыми).
Здравствуйте, Вячеслав!
В программе просто не используются состояния “checked” хоть в simple.qss они и есть. Чтобы увидеть как они работают, просто вставтьте в функцию main():
pcmdA->setCheckable(true);
pcmdB->setCheckable(true);
pcmdC->setCheckable(true);
Спасибо за пояснения, Макс! Проверил, всё работает. Сделал свой стиль, чтобы “поиграть” разными вариантами оформления и вставил элемент QComboBox, чтобы переключаться между стилями (применять разные стили из разных файлов). Очень интересно! Отличная возможность создавать стиль своего приложения, а самое главное простая и понятная.
Макс, и еще такой момент. На стр.389 в листинге 26.14 “Изменение состояния нажатия” задается градиент с помощью rgba. Четвертый параметр rgba, это альфа-канал (степень прозрачности) и насколько я знаю он меняется от 0 до 1. Поэтому запись вида rgba(1, 1, 5, 80) не совсем корректна.
P.S.: небольшая опечатка на стр. 384, внизу страницы описывается применение стиля к собственному классу, приведен код “background-colode: black”, правильно “background-color: black”.
Прозрачность в QtCSS можно установить тремя способами.
Вот три эквивалентных примера, которые устанавливают полупрозрачность (4-й параметр). Вы можете подставить их в пример программы
rgba(1, 1, 5, 127) // целое число
rgba(1, 1, 5, 0.5) // вещественное
rgba(1, 1, 5, 50%) // в виде процентов
P.S. “colorde:” это опечатка, должно быть “color:”.
Спасибо
Спасибо! Проверил, все варианты дают одинаковый результат (единственное, 127 – это не совсем половина (0,5, 50%), как я полагаю, но глаз, естественно, этого не поймет).
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Здравствуйте, Макс!
На стр. 372 в предпоследнем абзаце Вы пишите: “Класс QStyle имеет только одного потомка – класс QCommonStyle…”, а на рис.26.1. “Иерархия классов стилей” указано два класса потомка: QCommonStyle и QProxyStyle. Поясните, пожалуйста, этот момент.
Здравствуйте, Вячеслав!
Тут имеется ввиду прямой “потомок” (класс QCommonStyle), который непосрественно унаследован от класса QStyle. Класс QProxyStyle уже наследуется от QCommonStyle.
Понял. Спасибо!
Макс, на странице 376 в листинге 26.4 в конце не помешает добавить строчку “QApplication::setStyle(pcbo->currentText());”, чтобы при запуске приложения стиль становился таким, который отображается в комбо-бокс (pcbo) при появлении окна приложения.
Да, можно добавить и лучше тогда в конце конструктора дописать slotChangeStyle(pcbo->currentText()).
Здравствуйте, Макс!
В разделе “Использование каскадных стилей документа” Вы создаете стиль виджета с тремя кнопками (листинги 26.11-26.16). В файле стилей simple.qss почему-то не создается (не работает в прилжении) нужный стиль для состояния QPushButton:checked, и соответственно для QPushButton:checked:hover (листинги 26.15, 26.16). Как я полагаю применяется какой-то стандартный. Т.е. если убрать или закомментировать эти состояния в файле simple.qss ничего не меняется (с другими состояниями все работает). Не могу понять почему так? Может версия Qt 5.11 не поддерживает состояние checked в стилях для QPushButton?
P.S.: для проверки состояния checked переключаю фокус TAB-ом, кнопки при этом немного светлеют (становятся сероватыми).
Здравствуйте, Вячеслав!
В программе просто не используются состояния “checked” хоть в simple.qss они и есть. Чтобы увидеть как они работают, просто вставтьте в функцию main():
pcmdA->setCheckable(true);
pcmdB->setCheckable(true);
pcmdC->setCheckable(true);
Спасибо за пояснения, Макс! Проверил, всё работает. Сделал свой стиль, чтобы “поиграть” разными вариантами оформления и вставил элемент QComboBox, чтобы переключаться между стилями (применять разные стили из разных файлов). Очень интересно! Отличная возможность создавать стиль своего приложения, а самое главное простая и понятная.
Макс, и еще такой момент. На стр.389 в листинге 26.14 “Изменение состояния нажатия” задается градиент с помощью rgba. Четвертый параметр rgba, это альфа-канал (степень прозрачности) и насколько я знаю он меняется от 0 до 1. Поэтому запись вида rgba(1, 1, 5, 80) не совсем корректна.
P.S.: небольшая опечатка на стр. 384, внизу страницы описывается применение стиля к собственному классу, приведен код “background-colode: black”, правильно “background-color: black”.
Прозрачность в QtCSS можно установить тремя способами.
Вот три эквивалентных примера, которые устанавливают полупрозрачность (4-й параметр). Вы можете подставить их в пример программы
rgba(1, 1, 5, 127) // целое число
rgba(1, 1, 5, 0.5) // вещественное
rgba(1, 1, 5, 50%) // в виде процентов
P.S. “colorde:” это опечатка, должно быть “color:”.
Спасибо
Спасибо! Проверил, все варианты дают одинаковый результат (единственное, 127 – это не совсем половина (0,5, 50%), как я полагаю, но глаз, естественно, этого не поймет).