我希望拥有大量 QColors,许多类将共享和索引。

过去,我一直有这样的 list :

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 的大列表?

最佳答案

如果你希望你的列表是动态的,我会使用某种 QVector 代替,包装在一个颜色管理器中,例如:
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 是有序结构,因此您没有使用 [] 运算符,并且您必须在 ColorManager 中使用 QSet::find() 实现查找。它也会变慢。
如果它必须是线程安全的,您最终可以使用 QMutex 来保护它。

另外,我不知道你为什么需要这个,但你应该看看:
QColorGroup 和/或 QPalette

关于c++ - 如何生成不同的新 QColors,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8571059/

10-13 07:02