代码之家  ›  专栏  ›  技术社区  ›  JokerMartini

初始化Qt C++中的Qualts列表

  •  2
  • JokerMartini  · 技术社区  · 7 年前

    如何初始化qcolor的静态列表。我使用的是Qt 5.11.1

    在我的头文件中,我有:

    QList<QColor> *colorList;
    

    不知道我用这个是否合适

    QColor *colorList[15];
    

    那我在CPP文件里写什么呢。。。像这样的事

    colorList = {
        QColor(220,0,0),
        QColor(250,140,0),
        QColor(255,255,0),
        QColor(145,210,80),
        QColor(0,180,20),
        ...
    };
    

    我最终会用这个颜色循环这个颜色列表。

    更新

    下面是代码的导入位。

    h

    #include <QWidget>
    #include <colorswatch.h>
    #include <QColorDialog>
    #include <QMenu>
    #include <QList>
    
    class ColorSwatchPicker : public ColorSwatch
    {
        Q_OBJECT
        ...
    
    private:
        void init();
        ...
        QList<QColor> *colorList;
    };
    

    void ColorSwatchPicker::createButtons()
    {
        //! create color swatch menu
        QWidget *colorWidget = new QWidget(this);
        QGridLayout *layout = new QGridLayout(colorWidget);
        layout->setSpacing(4);
        layout->setContentsMargins(0,0,0,0);
    
        // create color swatches
        colorList = new QList<QColor>({
                QColor(255,70,50),
                QColor(230,30,100),
                QColor(155,40,175),
                QColor(105,60,185),
                QColor(65,80,180),
                ...
            });
    
        // Create the pushbutton control
        foreach (const QColor &c, colorList) {
            auto *cs = new ColorSwatch(c, this);
            cs->setFixedSize(18,18);
        };
    

    }

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   scopchanov    7 年前
    1. 定义 alias (可选)

      using ColorList = QList<QColor>;
      
    2. auto *colorList = new ColorList({
          QColor(220,0,0),
          QColor(250,140,0),
          QColor(255,255,0),
          // ...
      });
      
    3. 迭代中的颜色 colorList

      foreach (const QColor &c, *colorList) {
          // do something with c
      }
      

      注(感谢@drescherjm和@AlbertoMiola) :或者您可以使用 而不是 foreach :

      for (const auto &c : *colorList) {
          // do something with c
      }