编译器抱怨'QTransform :: QTransform(bool)'在使用公共bool时是私有的,为什么?

时间:2016-03-07 09:07:41

标签: c++ qt

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方法的尝试。

那么我做错了什么? 如何明确我没有引用一个方法,而是在我发布的第一个片段中看到的类的公共枚举?

1 个答案:

答案 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)

但是没有可以从您使用的枚举转换为转换对象的构造函数