QT - QDialogでQScrollareaの中を描く
-
23-12-2019 - |
質問
Qt
5では、私は次のように円を描いたQDialog
ウィンドウを持っています:
void MyDialog::paintEvent(QPaintEvent *pe)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true);
QPen pen(Qt::blue,2);
painter.setPen(pen);
QRect r=QRect(0,0,100,100);
painter.drawEllipse(r);
}
.
例えばQRect(0,0,500,500);
を使用することによって、より大きな円を描くと、ダイアログウィンドウよりも大きい円が切り取られます。だから私はダイアログウィンドウにQScrollArea
をドラッグし、スクロールバーが自動的に追加されるようにそれを描画することにします。QScrollArea
はui->scrollArea
を使用してアクセスできます。
QPainter painter(ui->scrollArea);
を設定して上記のコードを変更しました。ただし、NothingsはQScrollArea
に表示されます。paintEvent
のQScrollArea
をオーバーライドする必要があることを読みました。しかし、私はこれを行う方法がわかりません。
QScrollArea
を描くのは任意の助けですか?
解決
QScrollareaの描画は、QSCrollareaが実際にビューポートウィジェットを持っているため、必要なものではありません。
QWIDGetを継承する別のクラスを作成します。PaintEvent()メソッドとあなたが言及した絵に上書きしてください。次に、ダイアログのスクロール領域にウィジェットを追加します。
MyDialog::MyDialog()
{
QScrollArea *pScrl = new QScrollArea(this);
pScrl->setWidget(new MyWidget(pScrl));
... // use a layout to put the scroll area in the dialog
}
.
本当に便利にするために、MyWidgetインスタンスを描きたい円のサイズに変更する必要があります。
所属していません StackOverflow