QT paintEvent für ein QWidget

Ich habe eine Klasse, die erbt QPushButton-widget. Ich möchte ein benutzerdefinierte Aussehen der button, so habe ich overrided paintEvent-Methode. Alle Tasten, die ich malen will, sind childs von QFrame-Objekt.

Und da habe ich ein problem. Ich kann nicht streichen, diese Objekte.

Meine paintEvent-Funktion:

void Machine::paintEvent(QPaintEvent*) {
    QPainter painter(this);
    QRect geo = this->geometry();

    int x, y, width, height;

    x = geo.x()-10;
    y = geo.y()-10;
    width = geo.width()-3;
    height = geo.height()-5;

    painter.fillRect(x, y, width, height, QColor(220,220,220));

    painter.drawText(x+10, y+10, "Machine " + QString::number(id));
}

Wenn ein widget in der linken oberen Ecke von QFrame, gewünschte Effekt ist ok. Aber wenn ich move-Taste woanders, widget zu verschwinden beginnt. Auf den Bildern können Sie sehen, was Los ist:

QT paintEvent für ein QWidget

Schaltfläche ist nur verschoben, einige px nach unten-Links. Warum funktioniert es so? QFrame ist ein container für diesen button ist groß genug.

Vielen Dank im Voraus 😉

  • Was ist, wenn Sie implementieren moveEvent und update aufrufen, von dort?
InformationsquelleAutor marxin | 2014-01-18
Schreibe einen Kommentar