ウィンドウに単純な 2 次元図形を描画しようとしていQWidget
ます。がpaintEvent
定義されており、クラスのペインタ オブジェクトQPainter
も定義されています。私の図面には、線やテキストなど、さまざまな場所に複数回描画する必要がある要素が含まれています。この目的のために、関数を使用してこれらの線をさまざまな位置に描画しています。テキストについても同様です。プログラムを短くするために、モジュール化も行います。
関数は、paintEvent
計算と描画に使用される関数を呼び出しています。
QPainter
で定義されたペインタ オブジェクトpaintEvent
を関数に渡すにはどうすればよいですか。
例えば
void Classname::drawText(QString text, int PosX, int PosY, QPainter painter)
{
QSize size=this->size();
QFont times("Helvetica [Cronyx]", 10);
QFontMetrics box(times);
int boxWidth = box.width(text);
int boxHeight = box.height();
painter.setFont(times);
painter.setPen(Qt::white);
painter.drawText(PosX,PosY,text);
}
QPainter
次に、クラスのペインタ オブジェクトに対して型名が許可されていないことを vc++ 環境が通知しているというエラーが表示されます。
QPainter
以下に示すように、painter1 オブジェクトを定義するとします。
void Classname::drawText(QString text, int PosX, int PosY, QPainter painter)
{
QPainter painter1;
QSize size=this->size();
QFont times("Helvetica [Cronyx]", 10);
QFontMetrics box(times);
int boxWidth = box.width(text);
int boxHeight = box.height();
painter.setFont(times);
painter.setPen(Qt::white);
painter.drawText(PosX,PosY,text);
}
プログラムはコンパイルされますが、出力はありません。
これはコードの一部ですQPainter
。すべての関数でクラスのオブジェクトを定義しています。
このスレッドを読みましたが、指示が明確ではありません。begin()
andend()
関数は、描画のすべてのインスタンスで呼び出す必要がありますか、paintEvent
それとも関数内で 1 回だけ呼び出す必要がありますか?