首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt -在QScrollArea中绘制QDialog

Qt -在QScrollArea中绘制QDialog
EN

Stack Overflow用户
提问于 2014-02-27 17:39:00
回答 1查看 2.5K关注 0票数 1

Qt5中,我有一个QDialog窗口,在该窗口上画了一个圆圈,如下所示:

代码语言:javascript
复制
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);更改了上面的代码。然而,QScrollArea中没有出现任何东西。我读到我需要覆盖paintEvent of QScrollArea。但我不知道该怎么做。

使用QScrollArea绘图的任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-27 18:49:02

在QScrollArea上绘图也不是您想要的,因为QScrollArea实际上有一个viewport小部件。

创建继承QWidget的另一个类。重写paintEvent()方法和您提到的绘图。然后,将小部件添加到对话框中的滚动区域。

代码语言:javascript
复制
MyDialog::MyDialog()
{
  QScrollArea *pScrl = new QScrollArea(this);
  pScrl->setWidget(new MyWidget(pScrl));
  ... // use a layout to put the scroll area in the dialog
}

要使它真正有用,您需要将MyWidget实例的大小调整为要绘制的圆圈的大小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22076136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档