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

那我在做什么错?
以及如何弄清楚我不是在引用方法,而是在我发布的第一个片段中看到的类的公共枚举?

最佳答案

这是问题所在:

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)


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

关于c++ - 编译器在使用公共(public) bool 时提示'QTransform::QTransform(bool)'是私有(private)的,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35839802/

10-13 08:28