Qt中怎么给一个用drawLine绘制的封闭的多边形的填充颜色

Qt中怎么给一个用drawLine绘制的封闭的多边形的填充颜色,第1张

使用QPainterPath添加路径, 

然后用QPainter::setBrush(const QBrush & brush)设置颜色,  

QPainter::drawPath(const QPainterPath & path)绘制路径

1、利用style sheet给窗体设置背景

使用stylesheet设置背景图片还是有一些要注意的,如果是在mainwindow和dialog中,直接右键change style sheet在add resource中选择background-image或者border-image,选择资源文件中的图片就行了(前者是按像素显示图片,后者可根据窗体大小来自动缩放图片,通常使用后者,前者如果界面与图片大小不一样,则背景的显示可能就不是整张图片了),

 

a、但在widget中就不行,你会发现,用同样的方法,背景并没有发生改变,而仅仅是它的子窗体背景图片发生了改变。

那么在widget中要如何做呢,我们在widget中放置一个frame,然后对frame通过stylesheet设置背景,后面窗体里所有的部件都放在这个frame里。

b、 我们知道,子窗体会继承父窗体的属性,也就是说,父窗体的背景,在子窗体中也会有,那如何让子窗体不继承父窗体的背景呢,同样的,还是在Edit Style Sheet里,需要输入如下代码:(这样就可以解决窗体中的按键、QLable等控件与主窗体的一样。)

#desktop {

border-image: url(:/images/desktop.jpg)

}

#desktop * {

border-image:url()

}

desktop是你的窗体名。

2、不过也可以通过如下代码来实现:

QWidget *widget = new QWidget()

widget->setAutoFillBackground(true)

QPalette palette

QPixmap pixmap(":/Resources/Penguins.jpg")

palette.setBrush(QPalette::Window, QBrush(pixmap))

widget->setPalette(palette)

widget->show()

一般我喜欢使用前面去设计,在ui中进行,方便简单。

QGradient 可以和 QBrush 组合使用,来指定渐变填充。

Qt 目前支持三种类型的渐变填充:

1、QLinearGradient:显示从起点到终点的渐变

2、QRadialGradient:以圆心为中心显示渐变

3、QConicalGradient:围绕一个中心点显示渐变

渐变类型可以使用 type() 函数来检索,类型中的每一个都是 QGradient 的子类。

效果:

QLinearGradient 构造函数的第一个参数指定起点,第二个参数指定终点,然后显示渐变。函数setColorAt() 用于设置起点和终点之间要显示的颜色,setSpread() 可以设置起点和终点区域之外的显示模式。

QRadialGradient 类以圆心为中心显示渐变。(cx, cy) 是中点,半径(radius)是以中点为圆心的圆的半径,(fx, fy) 是渐变的起点。

效果:

QRadialGradient 构造函数的第一个参数和第二个参数是 (cx, cy) 坐标,第三个参数是半径,第四个和第五个参数是 (fx, fy) 坐标。

QConicalGradient 在 (cx, cy) 坐标上以角度 (angle) 为中心显示渐变。

效果:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11329781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存