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

Integer to QColor

int, QColor

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

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

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

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

13
Evgenii Legotckoi
  • 13 февраля 2020 г. 5: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 г. 5:40

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

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

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

      ну тогда так

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

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

      826185 "#0c9b49"

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

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

          Evgenii Legotckoi
          • 13 февраля 2020 г. 6: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 г. 6:35

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

              Ruslan Polupan
              • 13 февраля 2020 г. 6: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 г. 6: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 г. 6:59

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

                    Ruslan Polupan
                    • 13 февраля 2020 г. 7: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 г. 7: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 г. 8:49

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

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

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

                          ИП
                          • 20 февраля 2020 г. 1: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());
                              }
                          

                            Комментарии

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

                            C++ - Тест 004. Указатели, Массивы и Циклы

                            • Результат:50баллов,
                            • Очки рейтинга-4
                            m
                            • molni99
                            • 26 октября 2024 г. 8:37

                            C++ - Тест 004. Указатели, Массивы и Циклы

                            • Результат:80баллов,
                            • Очки рейтинга4
                            m
                            • molni99
                            • 26 октября 2024 г. 8:29

                            C++ - Тест 004. Указатели, Массивы и Циклы

                            • Результат:20баллов,
                            • Очки рейтинга-10
                            Последние комментарии
                            ИМ
                            Игорь Максимов22 ноября 2024 г. 19:51
                            Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                            Evgenii Legotckoi
                            Evgenii Legotckoi31 октября 2024 г. 21:37
                            Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                            A
                            ALO1ZE19 октября 2024 г. 15:19
                            Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                            ИМ
                            Игорь Максимов5 октября 2024 г. 14:51
                            Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                            d
                            dblas55 июля 2024 г. 18:02
                            QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                            Сейчас обсуждают на форуме
                            m
                            moogo22 ноября 2024 г. 15:17
                            Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
                            Evgenii Legotckoi
                            Evgenii Legotckoi24 июня 2024 г. 22:11
                            добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                            t
                            tonypeachey115 ноября 2024 г. 14:04
                            google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                            NSProject
                            NSProject4 июня 2022 г. 10:49
                            Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

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