Ruslan Polupan
Ruslan Polupan13. Februar 2020 04:16

Integer to QColor

int, QColor

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

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

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

13
Evgenii Legotckoi
  • 13. Februar 2020 05:04
  • (bearbeitet)

Добрый день.

Сначала нужно конвертировать 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. Februar 2020 05:40

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

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

      Evgenii Legotckoi
      • 13. Februar 2020 05:44
      • (bearbeitet)

      ну тогда так

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

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

      826185 "#0c9b49"

        Ruslan Polupan
        • 13. Februar 2020 06:14

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

          Evgenii Legotckoi
          • 13. Februar 2020 06: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. Februar 2020 06:35

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

              Ruslan Polupan
              • 13. Februar 2020 06:40
              • (bearbeitet)

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

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

              <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. Februar 2020 06: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. Februar 2020 06:59

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

                    Ruslan Polupan
                    • 13. Februar 2020 07: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. Februar 2020 07:07
                      • Die Antwort wurde als Lösung markiert.

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

                      Или вот такое

                      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. Februar 2020 08:49

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

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

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

                          ИП
                          • 20. Februar 2020 01:24
                          • (bearbeitet)
                          QSqlQuery query("SELECT CONCAT("#", LPAD(HEX(`t`.RGB), 6, 0)) FROM table AS t");
                          query.exec();
                              while (query.next())
                              {
                                  QColor(query.value(0).toString());
                              }
                          

                            Kommentare

                            Nur autorisierte Benutzer können Kommentare posten.
                            Bitte Anmelden oder Registrieren
                            Letzte Kommentare
                            A
                            ALO1ZE19. Oktober 2024 08:19
                            Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                            ИМ
                            Игорь Максимов5. Oktober 2024 07:51
                            Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                            d
                            dblas55. Juli 2024 11:02
                            QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                            k
                            kmssr8. Februar 2024 18:43
                            Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                            Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                            Jetzt im Forum diskutieren
                            J
                            JacobFib17. Oktober 2024 03:27
                            добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                            JW
                            Jhon Wick1. Oktober 2024 15:52
                            Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                            КГ
                            Кирилл Гусарев27. September 2024 09:09
                            Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                            F
                            Fynjy22. Juli 2024 04:15
                            при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                            Folgen Sie uns in sozialen Netzwerken