Qt Débutant QPainter et QRect

Comment pourrais-je aller sur le dessin d'un rectangle?

J'ai essayé de deux façons différentes;

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);
}

Qui fonctionne très bien (même si le paramètre n'est pas nommé ni utilisé), mais je ne veux pas utiliser le QPaintEvent * je n'ai aucune utilité pour elle.

Alors, j'ai essayé simplement en renommant ma fonction;

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);
}

Cela ne veut pas afficher quoi que ce soit (et encore, il a pas d'erreurs).

Pourquoi ne serait-il pas travailler si je n'utilise pas QPaintEvent * ??

Pourquoi attendez-vous un nom aléatoire et fonction d'être appelé à faire quelque chose? Votre première méthode est très bien. Ne pas nommer les paramètres que vous n'avez pas besoin (encore) est à la fois juridique et idiomatiques C++.
Ok, serait-il possible d'obtenir la première méthode fonctionne si je n'avais pas le paramètre, encore conservé le reste la même?
Non, ce paramètre est nécessaire que vous utilisiez ou non. Je ne comprends pas pourquoi vous voulez l'enlever, il ne vous coûte rien de l'ignorer.
Il provoque des problèmes pour moi plus tard dans mon code, j'ai d'autres paramètres passés à savoir const QString &data. Est-il un autre moyen pour dessiner un rectangle, en s'éloignant de l'aide de paramètres d'événement? Merci pour vos réponses.
La signature pour les fonctions d'événement est fixe, vous ne pouvez pas les changer (sauf peut-être pour ajouter des paramètres avec des valeurs par défaut, mais je ne le ferais pas, même si ça fonctionne). Vous devez décrire votre problème plus en détail dans votre question, il semble que vous essayez de faire quelque chose "le mauvais chemin".

OriginalL'auteur Ash | 2012-12-31