QT绘制界面无变化解决方式(QT系列15)

在学完QT的绘制函数后,大家也许会想添加一个按钮,按下按钮后就绘制另一张不同的图像,但实际写完后,却发现没有什么作用。如果有人把界面隐藏再打开就会发现,图像发生了变化。
这种情况的原因是QT的界面不能实时刷新,所以绘制完图像后,界面不能显示变化,隐藏再放大界面后界面会自动刷新一次,这样才使得界面上出现了新的图画。

在QT中调用下列函数可以解决这一问题。(最好用的是update()函数)

  1. update()函数,实质上是调用了repaint函数,但是不是同步的,就是repaint函数可能不会立即执行。调用多次update()可能只执行了一次repaint()函数。
  2. 就是直接调用repaint()函数,如果这个控件不是disable状态或者不是隐藏状态,它将直接调用paintEvent()函数。如果你需要立刻刷新,官方也建议之间是用repaint()函数。
  3. 如果以上都不行,你也可以试试以下这个方法。showNormal(),它也许会有用。
  4. 使用resize()函数。可以这样调用this->resize(this->size());
  5. 最后可以选择adjust()函数,一般情况下直接使用这个函数,就能进行界面的实时调整
//工程类型为QWidget时的函数
void QWidget::update()
void QWidget::repaint()
void QWidget::showNormal()
void resize(const QSize &)
void QWidget::adjustSize()
//如果工程类型换成QMainWindow,按下面这么改就行
void QMainWindow::update();

如果是通过按下按键改变图像,那在按键的槽函数末尾加一个update()函数就可以了。

你可能感兴趣的:(QT)