qt类的第一个块是:
class Q_GUI_EXPORT QTransform
{
public:
enum TransformationType {
TxNone = 0x00,
TxTranslate = 0x01,
TxScale = 0x02,
TxRotate = 0x04,
TxShear = 0x08,
TxProject = 0x10
};
如此不明智地不是私人的。
当我现在尝试编译我的程序时,编译器会抱怨这一行:
QGraphicsScene scene;
item = scene.itemAt(50, 50, QTransform::TxNone);
它给了我:
错误:'QTransform :: QTransform(bool)'是私有的
inline QTransform(bool) ^
接下来是:
错误:在此上下文中
item = scene.itemAt(50,50,QTransform::TxNone); ^
但我不知道是什么让编译器认为QTransform::TxNone
是调用QTransform方法的尝试。
那么我做错了什么? 如何明确我没有引用一个方法,而是在我发布的第一个片段中看到的类的公共枚举?
答案 0 :(得分:2)
问题在于:
QGraphicsItem * QGraphicsScene::itemAt(qreal x, qreal y, const QTransform & deviceTransform) cons
它接受QTransform
对象...
QTransform()
QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33 = 1.0)
QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)
QTransform(const QMatrix & matrix)
但是没有可以从您使用的枚举转换为转换对象的构造函数