2016-12-20 7 views
0

Ich bin Anfänger für Qt und ich entwickle eine GUI-Widget-Anwendung für mein Projekt. Ich kopierte den Code aus einem sehr alten Projekt, und wenn mein Projekt kompilieren, bekomme ich diesen Fehler:Was kann anstelle von QRectF verwendet werden?

error: ": C2661: 'QRectF::QRectF' : no overloaded function takes 3 arguments"

Der Code, der den Fehler zu erzeugen ist:

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

Qt Dokumentationen gegen sind QRectF zu verwenden , also in meinem Fall, was kann ich anstelle von QRectF verwenden?

+5

"Qt Dokumentationen sind gegen die Verwendung von QRectF": wo hast du das gesehen? – wasthishelpful

+0

Sie vermissen die 'Höhe' ... ich bezweifle das jemals kompiliert ... –

+0

Vielleicht bessere Frage: Welcher Typ ist' buttonSize'? –

Antwort

3

auf den Code der Suche, es wird erwartet, etwas wie:

QRectF(qreal x, qreal y, QSizeF size) 

der Tat gibt es keine solche Konstruktor im documentation of QRectF. Sie können jedoch eine der vorhandenen Konstrukteure verwenden:

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

Auf der anderen Seite:

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

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

Können, indem Ihr x und y Werte als QPointF verwendet werden

Kann verwendet werden, indem Sie Ihre buttonSize als with und height Werte übergeben:

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

ich re-code und versuche auf so viele Arten, ich benutze Qt 5.7. wenn ich Qt Dokumentation gelesen habe, dass sie erwähnt, dass QRectF als veraltet/veraltet, hier ist Link ich lese "http://doc.qt.io/qt-5/obsoleteclasses.html" Eigentlich meine Notwendigkeit ist, mein Widget zu animieren Eigenschaften, zum Beispiel gestapelte Widgets, müssen mit einem Übergangs- oder Fade-Effekt geändert werden. Ich weiß, dass es besser wäre, Qt Quick zu verwenden, aber mein Projektziel ist es, mit Qt-Widget-Anwendung abzuschließen. Bitte hilf mir, dieses Problem zu lösen. Danke im Voraus. – Yana

+0

@Yana Sie haben die von Ihnen angegebene Dokumentation falsch verstanden: QRectF ist ** nicht ** eine veraltete Klasse, sondern eine Klasse mit veralteten Elementen. Eine Liste der veralteten Funktionen von QRectF finden Sie unter [this link] (http://doc.qt.io/qt-5/qrectf-obsolet.html). Die Klasse an sich ist immer noch gültig und kann verwendet werden, vorausgesetzt, Sie verwenden es wie in meiner Antwort beschrieben – wasthishelpful

+0

Dank für Ihre Antworten .... – Yana

Verwandte Themen