Qt-在QDialog中绘制QScrollara内部
在Qt-在QDialog中绘制QScrollara内部,qt,drawing,qpainter,qdialog,qscrollarea,Qt,Drawing,Qpainter,Qdialog,Qscrollarea,在Qt5中,我有一个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
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,0500500)代码>,将剪裁大于对话框窗口的圆。因此,我将一个QScrollArea
拖到对话框窗口上,并决定在该窗口上绘制,以便自动添加滚动条。可以使用ui->scrollArea
访问QScrollArea
我通过设置QPainter painter(ui->scrollArea)更改了上述代码代码>。但是,qscrollara
中没有显示任何内容。我读到我需要覆盖qscrollara
的paintEvent
。但我不知道怎么做
在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实例的大小调整为要绘制的圆的大小。谢谢!很好用!