我在更新绘图方面有问题。我有两个文件: mainwindow.cpp和drawwidget.cpp。在主窗口中,我加载一个带有x,y点参数的文件。当我点击一个按钮时,我会选择其中的几个,然后将它传递给draw小部件来绘制这个点。
为了了解它是如何工作的,我暂时画一个椭圆,并将"p“乘以大小。当我单击一个按钮时,"p“会更改值(我用QMessageBox打印了它及其不同的值),但是省略号仍然是相同的大小。我做错了什么?
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();
}发布于 2016-05-16 00:30:50
您需要对小部件进行update(),以触发QPaintEvent并跟踪对paintEvent()的调用。
画图事件是重新绘制小部件的全部或部分的请求。发生这种情况可能有以下原因之一:
见docs:QWidget::paintEvent()
https://stackoverflow.com/questions/37244881
复制相似问题