0

The following piece of code produces error while compiling with Qt 5

styleComboBox = new QComboBox;
typedef QPair<QString, Qt::BrushStyle> BrushPair;
foreach (const BrushPair &pair, QList<BrushPair>()
        << qMakePair(tr("No Brush"), Qt::NoBrush)
        << qMakePair(tr("Solid"), Qt::SolidPattern)
        << qMakePair(tr("Dense #1"), Qt::Dense1Pattern)
        << qMakePair(tr("Dense #2"), Qt::Dense2Pattern)
        << qMakePair(tr("Dense #3"), Qt::Dense3Pattern)
        << qMakePair(tr("Dense #4"), Qt::Dense4Pattern)
        << qMakePair(tr("Dense #5"), Qt::Dense5Pattern)
        << qMakePair(tr("Dense #6"), Qt::Dense6Pattern)
        << qMakePair(tr("Horizontal"), Qt::HorPattern)
        << qMakePair(tr("Vertical"), Qt::VerPattern)
        << qMakePair(tr("Cross"), Qt::CrossPattern)
        << qMakePair(tr("Diagonal /"), Qt::BDiagPattern)
        << qMakePair(tr("Diagonal \\"), Qt::FDiagPattern)
        << qMakePair(tr("Diagonal Cross"), Qt::DiagCrossPattern))
    styleComboBox->addItem(pair.first, pair.second);

The error message is below:

C:\Qt\Qt5.2.1\5.2.1\mingw48_32\include\QtCore\qvariant.h:481: error: 'QVariant::QVariant(Qt::BrushStyle)' is private
 QVariant(Qt::BrushStyle) Q_DECL_EQ_DELETE;
 ^

SO how do I overcome it?

1 Answers1

2

A BrushStyle is an enum type, not a QVariant type. I think you mean to use a QBrush.

styleComboBox = new QComboBox;
typedef QPair<QString, QBrush> BrushPair;
foreach (const BrushPair &pair, QList<BrushPair>()
        << qMakePair(tr("No Brush"), QBrush(Qt::NoBrush))
        << qMakePair(tr("Solid"), QBrush(Qt::SolidPattern))
...

When calling addItem on your ComboBox, you're implicitly converting the 'second' member of your BrushPair into a QVariant

tinkertime
  • 2,972
  • 4
  • 30
  • 45
  • Thanks. However I solved it by casting the second member of addItem to int: styleComboBox->addItem(brushSwatch(pair.second), pair.first, static_cast(pair.second)); – user1659459 May 09 '14 at 06:00
  • I would not recommend using a static_cast to int here. By doing so you're losing any context of that item being QBrush related – tinkertime May 09 '14 at 12:06