2011-12-20 3 views
4

Я хочу иметь большой массив QColors, с которым будут делиться и индексировать многие классы.Как генерировать новые QColors, которые отличаются друг от друга

В прошлом, я всегда был список, как, например:

QColor colours[10] = {QColor("cyan"), QColor("magenta"), QColor("red"), 
         QColor("darkRed"), QColor("darkCyan"), QColor("darkMagenta"), 
         QColor("green"), QColor("darkGreen"), QColor("yellow"), 
         QColor("blue")}; 

Однако теперь я хочу гораздо больше, чем 10. Как я могу создать большой список различных QColors?

ответ

1

, если вы хотите, чтобы ваш список, чтобы быть динамичным, я хотел бы использовать какие-то QVector вместо этого, завернутого в Color Manager, например:

 

    class ColorManager 
    { 
     public: 
      ColorManager(size_t iDefaultSize) 
      { 
       m_colorList.reserve(iDefaultSize); 
      } 

      void addColor(const QColor& c) 
      { 
       m_colorList.push_back(c); 
      } 

      QColor& operator[](int iIndex) 
      { 
       return m_colorList.at(iIndex); 
      } 

     private: 
      QVector m_colorList; 
    }; 
 

Если ваши цвета должны быть уникальными, рассмотреть вопрос об использовании QSet, но вы потеряете оператор [], так как QSet - упорядоченная структура, и вам придется реализовать find в ColorManager, используя QSet :: find(). Это также будет медленнее. Если он должен быть потокобезопасным, вы можете в конечном итоге защитить его с помощью QMutex.

Кроме того, я не знаю, почему вам это нужно, но вы должны смотреть на:

QColorGroup и/или QPalette

0

Вы можете использовать конструктор QColor который принимает красный, зеленый и синий параметры для создания новых цветов, как:

QColor colours[10] = {QColor(255,0,0), QColor(0,255,0), QColor(0,0,255), 
        QColor(0,0,0), QColor(255,255,255), 
        QColor(0,128,64)}; 

Вы можете использовать как много возможных комбинаций г, г, б, чтобы придумать новые цвета , Вы можете найти красные, зеленые и синие параметры для разных цветов, взглянув на таблицу цветов Pantone и создайте хороший набор цветов для вашего приложения.

Смежные вопросы