2014-05-08 36 views
0

而使用Qt 5的QVariant ::的QVariant(QT :: BrushStyle)是私有的

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); 

該錯誤消息編譯下面的代碼段產生誤差低於:

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怎麼辦我克服了它?

回答

1

BrushStyle是枚舉類型,而不是QVariant類型。我想你的意思是使用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)) 
... 

當你的組合框調用的addItem,你含蓄的BrushPair的「第二」成員轉換成QVariant

+0

感謝。然而,我通過將addItem的第二個成員轉換爲int來解決它:styleComboBox-> addItem(brushSwatch(pair.second),pair.first,static_cast (pair.second)); – user1659459

+0

我不建議在這裏使用static_cast來int。通過這樣做,你會失去與QBrush相關的任何內容 – tinkertime

相關問題