如何使用QPainter 实现在 paintevent() 函数外绘图,qpaintevent

文章 3年前 (2021) admin
0

Q1:如何在Qt的 paintEvent之外进行绘制

以前遇到的很多小知识,都是从今天开始一点一点记录下来的。只有两种窗口:背景色和背景图片。如何在Qt中设置窗口背景?介绍了以下三种方法:1 .用QPalette设置背景;2.实现paintEvent,用QPainter绘制背景;3.以QSS为背景。关于QSS的使用,我不想多说。一般我不用QSS设置窗口背景,不推荐。(注意:这是针对窗户的)。如果是子组件,当然可以。因为在窗口使用QSS设置背景后,如果子组件没有以相同的方式设置,它们将默认继承父窗口的样式。一般来说,子组件不需要设置背景图片,即使需要QSS,也可以完全满足。背景颜色和图标经常被设置。在QSS,背景颜色可以通过使用背景或背景色来设置,而图标可以通过使用setPixmap或setIcon来设置!以下描述了QPalette和paintEvent。1.设置QPalette的背景构造函数可以使用以下方法:(1)设置背景色QPalette(this-palette());调色板。设置颜色(QPalette:Background,Qt : black);this-setPalette(调色板);或者:QPalette调色板;palette . setbrush(this-background role()、Qt : black);this-setPalette(调色板);这里可以使用SetColor和setBrush!(2)设置背景图片qpixmap pixmap=qpixmap(" :/QM/safe ")。缩放(这个大小());QPalette(this-palette());palette . setbrush(qpalette : background,QBrush(pix map));this-setPalette(调色板);以上方法相当于设置背景色或背景图片QPalette:Background和this-backgroundRole()!二、paintEvent设置背景(1)设置背景颜色void iii mark : paint event(qpaint event *){ qpaint painter(this);painter . setbrush(Qt : black);painter . draw rect(this-rect());}(2)设置背景图片void iii mark : paint event(qpaint event *){ qpixmap pixmap=qpixmap(" 3360/QM/safe ")。缩放(这个大小());QPainter画师(本);painter.drawPixmap(this-rect(),pixmap);}注意:(1)以上图片都是以缩放的方式设置为适合窗口大小,因为给定的图片大小不一定符合要求,所以采用这种方式!当然图片在拉伸或压缩后会变形(纯色图片除外),所以图片使用这种方法时要注意。(2)设置背景范围时,如果需要填充整个窗口,最好用这个-rect(),因为我看到很多人都在用QRect这样的语句(0,0,400,400)。如果窗口大小改变了怎么办?你想改变这个句子吗?(3)如果背景图片或者颜色可以改变,也就是所谓的换肤功能,需要改变的时候使用paintEvent进行更新。(4)this-setautofilbackground(true)又让我想起了被很多人滥用的tr()。这句话是什么时候用的?使用QPalette设置背景,并添加和删除这句话进行比较(当有父窗口时)。如果直接显示QWidget,会有背景色,如果放在父窗口,就没有效果了。就加这句话!

Q2:QT 怎么在paintEvent外完成绘制操作

qbinder : begin : paint device returned engine==0,type :谁能帮我解决这个问题,或者有没有其他方法可以让我在paintEvent之外完成画图操作?谢谢各位英雄。xux

Q3:QT利用Qpainter怎么在多个窗口中画图 一般只能在paintEvent函数中为主窗口绘图 那怎么样在函数中

void drawTest(QWidget *wgt){ QPainter painter(wgt); painter.fillRect(wgt->rect(),wgt->palette().color(QPalette::Window));}比如这样?

Q4:QPainter只能在paintEvent中使用吗,该怎么解决

个人建议:是在谁的绘图区域绘图就把代码放在谁的paintevent函数里面。在新widget或其他容器里面绘制图形,绘图代码就应该放到该widget的paintevent函数里面。你可以在父窗口的paintevent函数里面,调用子窗口的paintevent试试。

Q5:qt 如何重写paintevent类,使paintevent画出的图形,不在我原有的widget上,在一个新的widget上或其它容器

个人建议:是在谁的绘图区域绘图就把代码放在谁的paintevent函数里面。在新widget或其他容器里面绘制图形,绘图代码就应该放到该widget的paintevent函数里面。你可以在父窗口的paintevent函数里面,调用子窗口的paintevent试试。

Q6:qt creator中,如何在一般的成员函数中使用qpainter绘图?

调用了update();系统会自动调用。

版权声明:admin 发表于 2021年10月23日 下午6:22。
转载请注明:如何使用QPainter 实现在 paintevent() 函数外绘图,qpaintevent | 热豆腐网址之家

相关文章