Qt Anfänger QPainter und QRect

Wie würde ich mich über ein viereck zeichnen?

Ich habe versucht, zwei verschiedene Arten;

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(Qt::black);
    QRect rect = QRect(290, 20, 70, 40);
    painter.drawText(rect, Qt::AlignCenter,
                      "Data");
    painter.drawRect(rect);
}

Welche gut funktioniert (auch wenn die parameter nicht benannt noch verwendet), aber ich don ' T wollen, verwenden Sie die QPaintEvent * ich habe keine Verwendung für Sie.

Also versuchte ich einfach umbenennen, meine Funktion;

void MyWidget::draw()
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(Qt::black);
    QRect rect = QRect(290, 20, 70, 40);
    painter.drawText(rect, Qt::AlignCenter,
                      "Data");
    painter.drawRect(rect);
}

Diese nicht mehr angezeigt wird nichts (hat aber keine Fehler).

Warum sollte es nicht funktionieren, wenn ich nicht verwenden, QPaintEvent * ??

  • Warum erwarten Sie, dass eine zufällig benannte Funktion, die aufgerufen werden, etwas zu tun? Deine erste Methode ist gut. Nicht die Benennung der Parameter, die Sie nicht brauchen (noch) ist sowohl rechtliche und idiomatischer C++.
  • Ok, würde es möglich sein, die erste Methode zu arbeiten, wenn ich nicht die parameter, noch gehalten, der rest gleich?
  • Nein, dieser parameter ist notwendig, ob Sie es verwenden oder nicht. Ich verstehe nicht, warum würden Sie wollen, um es zu entfernen - es muss nicht kostet Sie nichts, es zu ignorieren.
  • Es bewirkt, dass Probleme, die für mich später in meinem code, ich habe noch weitere Parameter übergeben, d.h. const QString &Daten. Gibt es einen alternativen Weg, um ein Rechteck zu zeichnen, Weg vom Ereignis-Parameter? Vielen Dank für Ihre Antworten.
  • Die Signatur für event-Funktionen ist fest, Sie können Sie nicht ändern, bei allen (außer vielleicht für das hinzufügen von Parametern mit default-Werten, aber ich würde es nicht tun, auch wenn es funktioniert). Sie müssen beschreiben Sie Ihr problem genauer in deiner Frage, es sieht aus wie Sie versuchen, etwas zu tun "der falsche Weg".
  • Ich habe einen detailsForm.cpp wo der Benutzer die details zu einem Paket. Wenn diese geschickt in die mainwindow.cpp die Paketdaten sind in einer neuen Registerkarte angezeigt. Ich hatte es gut funktioniert, wenn ich nur mit QTextEdit. Ich wollte dies ändern und QGraphicsView und zeigt die Paketdaten im inneren der Rechtecke, die das Paket realistischer Aussehen. Du hast Recht über mich, über dies der falsche Weg tbh. Ich bin einfach nur Herumspielen versucht, es herauszufinden.
  • Wenn Sie für den Wechsel von widgets zu verwenden qgraphics, dann warum nicht einfach QGraphicsRectItem oder Unterklasse eine Grafik posten?

InformationsquelleAutor Ash | 2012-12-31
Schreibe einen Kommentar