Qtの描画は描画イベントで行われます。描画システム全体はQPainter
、QPainterDevice
およびQPaintEngine
3つのカテゴリに基づいています。
QPainterは描画に使用され、QPainterDeviceは描画デバイスです。QPainterはQPainterDeviceに画像を描画します。
QPaintEngineの存在が見えないだけです。使用の使用、それらの間、上のドローを(翻訳である通信命令の)。QPainter
QPainterDevice
QPaintEngine
QPainter
もちろん、描画も描画イベント関数で行う必要があります。基本クラスの描画関数を書き換えます。以下に示すように:
void MainWindow::paintEvent(QPaintEvent *event)
{
paint = new QPainter(this);
paint->setPen(QColor(0,0,255));
paint->drawLine(30,30,300,300);
paint->drawRect(100,100,100,100);
paint->setPen((QColor(255,0,0)));
paint->drawEllipse(QPoint(300,300),50,50);
}
OpenGLは状態マシンです。いわゆるステートマシンとは、OpenGLがさまざまな状態のみを保存することを意味します。たとえば、ブラシの色を赤に設定した場合、別の色をリセットしない限り、その色は常に赤になります。QPainter
同じことが言えます。さまざまな設定機能を使用しない限り、状態は自動的には回復しません。
結果は次のとおりです。
この時点で、ウィンドウのサイズを変更すると、次の出力情報が表示されることに注意してください。つまり、再描画関数としてのpaintEvent()は、再描画が必要なときにQtによって自動的に呼び出されます。「再描画が必要」は、コンポーネントが作成された直後に再描画する必要があるなど、多くの場所で発生する可能性があります。コンポーネントが最大化および最小化された場合は、再描画する必要があります。コンポーネントがオクルージョンからフル表示に変化した場合も、待機する必要があります。
参考ブログ:https : //www.devbean.net/2012/10/qt-study-road-2-paint-sys/