プロジェクトを Qt 4.x から 5 に移行しています。次の属性を含むクラスがあります。
Qt::PenStyle penStyle;
およびそれぞれの get 関数:
Qt::PenStyle getPenStyle() {return penStyle;}
私はそれを言ってコンパイルエラーが発生します
error: 'QVariant::QVariant(Qt::PenStyle)' is private
QVariant(Qt::PenStyle) Q_DECL_EQ_DELETE;
^
..\marssies\painterbar.cpp:217:88: error: within this context
lineStyle -> setCurrentIndex(lineStyle -> findData(graphicObject->getPenStyle()));
^
いくつかの調査を行ったところ、次のことがわかりました。
QVariant:
*Qt::GlobalColor を受け取り、QVariant(QColor) インスタンスを生成する一貫性のないコンストラクターが削除されました。このようなバリアントを構築するコードは、QColor コンストラクターを明示的に呼び出すことで移行できます。たとえば、「QVariant(Qt::red)」から「QVariant(QColor(Qt::red))」*同様に、列挙値 Qt::BrushStyle、Qt::PenStyle、および Qt::CursorShape からの QVariants の暗黙的な作成は削除されました。オブジェクトを明示的に作成するか、static_cast(Qt::SolidLine) を使用して、列挙型と同じ値を持つ int 型の QVariant を作成します。
問題は、そのように Qt::PenStyle を実行できない場合、属性/関数をどのように宣言すればよいですか? オブジェクトを明示的に作成するとはどういう意味ですか? 私は引用が言うように何かをしようとしましたが、私はそれを解決することができませんでした. 他の同様のエラーを解決することはできましたが、属性または関数の宣言ではありませんでした。
完全なエラー:
In file included from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include\QtCore/qsettings.h:46:0,
from ..\..\..\..\..\Qt5\5.2.1\mingw48_32\include\QtCore/QSettings:1,
from ..\marssies\appcommon.h:10,
from ..\marssies\painterbar.h:5,
from ..\marssies\painterbar.cpp:1:
..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtCore/qvariant.h: In member function 'void PainterBar::setGraphicObject(GraphicsPrimitive*, PainterBar::FinishMode)':
..\..\..\..\..\Qt5\5.2.1\mingw48_32\include/QtCore/qvariant.h:482:5: error: 'QVariant::QVariant(Qt::PenStyle)' is private
QVariant(Qt::PenStyle) Q_DECL_EQ_DELETE;
^
..\marssies\painterbar.cpp:217:88: error: within this context
lineStyle -> setCurrentIndex(lineStyle -> findData(graphicObject->getPenStyle()));
^