В библиотеке Qt класс QColor предназначен для представления и управления цветами. Он поддерживает различные цветовые модели, включая RGB, HSV и CMYK, а также предоставляет множество методов для преобразования и получения информации о цветах. В этой статье мы рассмотрим основы работы с QColor, приведем примеры использования и обсудим типичные сценарии применения.
Что такое QColor?
QColor — это класс из модуля QtGui, представляющий цвет с возможностью управления прозрачностью (альфа-каналом) и преобразования между различными цветовыми моделями. С ним можно работать как с предопределенными цветами (например, "red", "blue") так и с пользовательскими значениями RGB, HSV и т.д.
Создание экземпляров QColor
Создавать цвета можно несколькими способами:
QColor color1(Qt::red); // Через перечисление Qt
QColor color2("blue"); // По имени цвета
QColor color3(255, 0, 0); // RGB
QColor color4(255, 0, 0, 128); // RGB + альфа
QColor color5 = QColor::fromRgbF(0.5, 0, 0); // RGB в формате float
Получение компонент цвета
QColor color(100, 150, 200, 255); int r = color.red(); // 100 int g = color.green(); // 150 int b = color.blue(); // 200 int a = color.alpha(); // 255 // Также есть методы для установки: color.setRed(120); color.setAlpha(180);
Поддержка других цветовых моделей
Qt поддерживает не только RGB, но и HSV/HSB (оттенок, насыщенность, яркость) и CMYK:
QColor color = QColor::fromHsv(180, 255, 255); // яркий циан int h = color.hue(); // 180 int s = color.saturation(); int v = color.value(); // Преобразование: int c, m, y, k; color.getCmyk(&c, &m, &y, &k);
Проверка допустимости цвета
QColor color("invalid_color");
if (!color.isValid()) {
qDebug() << "Цвет недопустим";
}
Использование с виджетами
QPalette palette;
palette.setColor(QPalette::Window, QColor("#87CEFA")); // light sky blue
someWidget->setPalette(palette);
someWidget->setAutoFillBackground(true);
Преобразование в строку и обратно
QColor color(Qt::green); QString hex = color.name(); // "#00ff00" QColor fromHex(hex); // снова зеленый
QColorDialog — выбор цвета пользователем
Qt предоставляет диалоговое окно для выбора цвета:
QColor color = QColorDialog::getColor(Qt::yellow, this, "Выберите цвет");
if (color.isValid()) {
qDebug() << "Выбран цвет:" << color.name();
}
Применение в стиле (CSS) Qt
Цвета можно задавать в стиле через setStyleSheet:
button->setStyleSheet("background-color: #FF4500; color: white;");
Заключение
Класс QColor — мощный и гибкий инструмент для работы с цветами в Qt. Он позволяет задавать цвета в различных форматах, преобразовывать между цветовыми моделями, проверять допустимость значений и легко интегрируется с другими компонентами Qt, такими как виджеты, палитры и диалоги.
Используя QColor, вы получаете полный контроль над визуальной частью вашего приложения.
