Ich habe ein Problem mit der Aktualisierung der Zeichnung. Ich habe 2 Dateien: mainwindow.cpp und drawwidget.cpp. Im Hauptfenster lade ich eine Datei mit x, y Punkt Parametern. Wenn ich auf eine Schaltfläche klicke, wähle ich einige davon aus und übergebe sie an drawwidget, um diese Punkte zu zeichnen.QPainter Daten aktualisieren
Um zu sehen, wie es funktioniert, zeichne ich vorübergehend eine Ellipse und ich multipliziere "p" mal Größe. Wenn ich auf eine Schaltfläche klicke, ändert "p" den Wert (ich habe es in QMessageBox und seinem anderen Wert gedruckt), aber die Ellipse hat immer noch dieselbe Größe. Was ich falsch mache?
DrawWidget::DrawWidget(QWidget *parent) :
QWidget(parent)
{
p=30;
}
void DrawWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
painter.setRenderHint(QPainter::Antialiasing);
paint(painter);
}
void DrawWidget::paint(QPainter &painter)
{
painter.drawEllipse(QRect(1*p-5, 5*p-5, 10, 10));
}
void DrawWidget::handleData(sPunkt *&Tab_pkt)
{
p=Array[0].x;
update();
}
Nun die letzten zwei Parameter [ 'QRect :: QRect (int, int, int, int)'] (http://doc.qt.io/qt -5/qrect.html # QRect-3) sind Breite und Höhe, das sind Konstanten in Ihrem Code ('10'). Also sollte sich die Größe nicht ändern. Sie ändern nur die Position. – thuga
Ja, meine Schuld, aber ich schrieb es, um zu sehen, ob sich irgendetwas ändert und nichts passiert, wenn ich den p Wert – kubizen
OK ändere, dann überprüfe den Wert von 'p' in der' paint' Methode. Drucken Sie eine 'QDebug' Nachricht oder etwas. – thuga