什么可以用来代替QRectF?

时间:2016-12-20 10:11:06

标签: c++ qt qt5

我是Qt的初学者,我正在为我的项目开发GUI小部件应用程序。我从一个非常古老的项目中复制了代码,在编译项目时,我收到了这个错误:

  

错误:“:C2661:'QRectF :: QRectF':没有重载函数需要3个参数”

产生错误的代码是:

*animation -> setEndValue(
    QRectF(
        cos(angleUnit * i) * scale + xShift,
        sin(angleUnit * i) * scale + yShift,
        buttonSize
    )
);

Qt文档反对使用QRectF,因此在我的情况下,我可以使用哪些代替QRectF

1 个答案:

答案 0 :(得分:3)

看看你的代码,它期待的是:

QRectF(qreal x, qreal y, QSizeF size)

的确,documentation of QRectF中没有这样的构造函数。但是,您可以使用现有构造函数之一:

QRectF(const QPointF &topLeft, const QSizeF &size)

可以将xy值作为QPointF传递来使用:

QRectF(
    QPointF(
        cos(angleUnit * i) * scale + xShift,
        sin(angleUnit * i) * scale + yShift
    ),
    buttonSize
)

另一方面:

QRectF(qreal x, qreal y, qreal width, qreal height)

可以将buttonSize作为withheight值传递来使用:

QRectF(
    cos(angleUnit * i) * scale + xShift,
    sin(angleUnit * i) * scale + yShift,
    buttonSize.width(),
    buttonSize.height()
)