我希望拥有大量 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/