Ruslan Polupan
Ruslan Polupan13 февраля 2020 г. 15:16

Integer to QColor

int, QColor

Доброго времени суток!
В базе данных цета хранятся как INTEGER

Как преобразовать значение в QColor?
Чет я сломал мозг...

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

13
Evgenii Legotckoi
  • 13 февраля 2020 г. 16:04
  • (ред.)

Добрый день.

Сначала нужно конвертировать int в QString hex в формате понятном для QColor, а потом установить его в QColor

int decimal  = 826185;
QString hexvalue = QString("#%1").arg(decimal, 8, 16, QLatin1Char( '0' ));
QColor color;
color.setNamedColor(hexvalue);
qDebug() << decimal << hexvalue << color.red() << color.green() << color.blue();

Вывод этого кода будет такой

826185 "#000c9b49" 12 155 73

    Ruslan Polupan
    • 13 февраля 2020 г. 16:40

    Спасибо.
    Немного дезинформировал, приложение консольное QColor не используешь.
    Нужен #hex цвет для html шаблона.

    ЗЫ никогда бы не подумал что все так сложно с цветами :-)

      Evgenii Legotckoi
      • 13 февраля 2020 г. 16:44
      • (ред.)

      ну тогда так

      int decimal  = 826185;
      QString hexvalue = QString("#%1").arg(decimal, 6, 16, QLatin1Char( '0' ));
      qDebug() << decimal << hexvalue;
      

      Выхлоп такой будет

      826185 "#0c9b49"

        Ruslan Polupan
        • 13 февраля 2020 г. 17:14

        Спасибо, это я пробовал но цвета почему то отличаются...
        лан это не критично...

          Evgenii Legotckoi
          • 13 февраля 2020 г. 17:21

          Сильно отличаются? Полагаю, что там также ещё альфа канал есть.
          Тогда попробуйте прибавить к строке 00 на конце

          int decimal  = 826185;
          QString hexvalue = QString("#%1").arg(decimal, 6, 16, QLatin1Char( '0' ));
          hexvalue.append("00");
          qDebug() << decimal << hexvalue;
          

          Выхлоп такой будет

          826185 "#0c9b4900"

            Ruslan Polupan
            • 13 февраля 2020 г. 17:35

            Про альфа я уже начитался попробовал, стало еще хуже :-)

              Ruslan Polupan
              • 13 февраля 2020 г. 17:40
              • (ред.)

              Это без альфа, с лева то что получилось справа вроде как образец

              те у меня получается

              <td align=right bgColor=#00ffff>92</td>
              

              а в оригинале

                <TD align=right bgColor=#FFFF00><SMALL><B>92</B>
              

              проверил дальше :-)
              у меня

              <td align=right bgColor=#0000ff>95</td>
              
                <TD align=right bgColor=#FF0000><SMALL><B>95</B>
              

              в оригинале

              такое чуство что не с того конца заполняется

                Evgenii Legotckoi
                • 13 февраля 2020 г. 17:51

                Прикол. Цвета по ходу в зеркальном отображении представлены.

                Сделайте так

                int decimal  = 826185;
                QString hexvalue = QString("%1").arg(decimal, 6, 16, QLatin1Char( '0' ));
                std::reverse(hexvalue.begin(), hexvalue.end());
                hexvalue = QString("#%1").arg(hexvalue);
                
                  Ruslan Polupan
                  • 13 февраля 2020 г. 17:59

                  уже, но осью являются 3 и4 символ

                    Ruslan Polupan
                    • 13 февраля 2020 г. 18:04

                    так что как-то так :-)

                            QString color = QString("%1").arg(intCol, 6, 16, QLatin1Char('0'));
                            QString c2 = color;
                            c2[0]=color[4];
                            c2[1]=color[5];
                            c2[4]=color[0];
                            c2[5]=color[1];
                    
                      Evgenii Legotckoi
                      • 13 февраля 2020 г. 18:07
                      • Ответ был помечен как решение.

                      Ну тоже как вариант.

                      Или вот такое

                      bool splitString(const QString &str, int n, QStringList &list)
                      {
                          if (n < 1)
                              return false;
                      
                          QString tmp(str);
                      
                          list.clear();
                      
                          while (!tmp.isEmpty()) {
                              list.append(tmp.left(n));
                              tmp.remove(0, n);
                          }
                      
                          return true;
                      }
                      

                      А потом так

                      QStringList splittedList;
                      splitString(hexvalue, 2, splittedList);
                      QString reversed = splittedList.join();
                      
                        Ruslan Polupan
                        • 14 февраля 2020 г. 19:49

                        Нашел функцию с тарых исходниках php

                        function IntToColor ($v)
                        {
                          return sprintf("%02X%02X%02X",$v&0xFF,($v>>0x8)&0xFF,($v>>0x10)&0xFF);
                        }
                        

                        Может кто помочь адаптировать... читать про ПХП не осилю...

                          ИП
                          • 20 февраля 2020 г. 12:24
                          • (ред.)
                          QSqlQuery query("SELECT CONCAT("#", LPAD(HEX(`t`.RGB), 6, 0)) FROM table AS t");
                          query.exec();
                              while (query.next())
                              {
                                  QColor(query.value(0).toString());
                              }
                          

                            Комментарии

                            Только авторизованные пользователи могут публиковать комментарии.
                            Пожалуйста, авторизуйтесь или зарегистрируйтесь
                            Ua

                            Qt - Тест 001. Сигналы и слоты

                            • Результат:84баллов,
                            • Очки рейтинга4
                            Ua

                            Qt - Тест 001. Сигналы и слоты

                            • Результат:42баллов,
                            • Очки рейтинга-8
                            ОК

                            Qt - Тест 001. Сигналы и слоты

                            • Результат:47баллов,
                            • Очки рейтинга-6
                            Последние комментарии
                            ИМ
                            Игорь Максимов22 ноября 2024 г. 21:51
                            Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                            Evgenii Legotckoi
                            Evgenii Legotckoi31 октября 2024 г. 23:37
                            Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                            A
                            ALO1ZE19 октября 2024 г. 17:19
                            Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                            ИМ
                            Игорь Максимов5 октября 2024 г. 16:51
                            Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                            d
                            dblas55 июля 2024 г. 20:02
                            QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                            Сейчас обсуждают на форуме
                            f
                            firstlunoxod15 февраля 2025 г. 13:46
                            Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
                            Дмитрий
                            Дмитрий3 февраля 2025 г. 16:24
                            Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                            NW
                            Nayo Wai30 января 2025 г. 19:22
                            не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                            n
                            nkly3 января 2025 г. 12:52
                            Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                            M
                            Marsel17 августа 2023 г. 0:26
                            OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

                            Следите за нами в социальных сетях