Инициализация списка QColors в Qt C ++ - PullRequest
0 голосов
/ 24 сентября 2018

Как я могу инициализировать статический список QColors.Я использую 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),
    ...
};

Я буду в конечном итоге перебирать этот список цветов, используя цвет.

Обновление Я получаю сообщение об ошибке при циклическом просмотре цветов.Какие цвета я использую для определения визуального цвета подкласса QPushButton I.

Вот биты импорта кода.

.h

#include <QWidget>
#include <colorswatch.h>
#include <QColorDialog>
#include <QMenu>
#include <QList>

class ColorSwatchPicker : public ColorSwatch
{
    Q_OBJECT
    ...

private:
    void init();
    ...
    QList<QColor> *colorList;
};

.cpp

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 Ответ

0 голосов
/ 24 сентября 2018
  1. Определение псевдонима (необязательно)

    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
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...