首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QVariant::QVariant(Qt::BrushStyle)是私有的

QVariant::QVariant(Qt::BrushStyle)是私有的
EN

Stack Overflow用户
提问于 2014-05-09 02:23:58
回答 1查看 522关注 0票数 0

下面这段代码在使用Qt 5编译时产生错误

代码语言:javascript
运行
复制
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);

错误消息如下:

代码语言:javascript
运行
复制
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;
 ^

那么我该如何克服它呢?

EN

回答 1

Stack Overflow用户

发布于 2014-05-09 03:56:24

BrushStyle是枚举类型,而不是QVariant类型。我想你的意思是使用QBrush。

代码语言:javascript
运行
复制
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))
...

在ComboBox上调用addItem时,会隐式地将BrushPair的“第二个”成员转换为QVariant

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23549663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档