• 5533阅读
  • 8回复

请问如何在一个窗口内显示两段背景色 [复制链接]

上一主题 下一主题
离线aaronhou
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-25
刚接触QT不久,想请教一下怎么在一个窗口内分段显示背景色,打个比方说一个窗口部件内一半背景色为红色,另一半背景色为蓝色?
还有个问题就是怎么在一个pushbutton上面绘图?
真心求助各位帮帮忙.
离线hover_sky

只看该作者 1楼 发表于: 2010-03-25
在窗体上面放置2个QWidget,然后分别设置背景
离线yangfanxing
只看该作者 2楼 发表于: 2010-03-25
pushbutton上面绘图sheetstyle等方法,请搜老帖;

両背景的话窗口北京填充应该有可以设置region之类的接口。
PHPWind好恶心。。。不想看这种界面。。。
离线aaronhou
只看该作者 3楼 发表于: 2010-03-25
能否说得再具体一点,我也想到了画两个无框widget分别填色的方法,可感觉应该有更专业的办法
离线yangfanxing
只看该作者 4楼 发表于: 2010-03-25
void QGradient::setColorAt ( qreal position, const QColor & color )
QBrush::QBrush ( const QGradient & gradient )
然后这里的position不知道设为0.5的时候是不是两种颜色各一半。。。是的话可以:
1、QPalette::setBrush(QPalette::Window, QBrush( your_brush));
     setPalette();

2、固定背景的话。。。画张图用QImage填充?
[ 此帖被yangfanxing在2010-03-26 09:44重新编辑 ]
PHPWind好恶心。。。不想看这种界面。。。
离线aaronhou
只看该作者 5楼 发表于: 2010-03-26
感谢楼上,我去试验一下
离线aaronhou
只看该作者 6楼 发表于: 2010-03-26
试了下,用QLinearGradient可以做出渐变色的效果~~~~但我想要的是两段纯色的背景色,后来想了想在paintEvent里面画了两个矩形,然后填色的方法.不知道还有没有更好的办法.

另外pushbutton上绘图的方法没有搜到啊,关键字该用什么去找.
离线yangfanxing
只看该作者 7楼 发表于: 2010-03-26
2、固定背景的话。。。画张图用QImage填充。嗯。。。

关键字pushbutton;
可以搜到好多啊,主要有用QImage和qss、setSheetStyle的方法。
PHPWind好恶心。。。不想看这种界面。。。
离线aaronhou
只看该作者 8楼 发表于: 2010-03-26
我把这个pushubutton单独定义出来(类名是PaintPat),继承于QPushButton,构造函数和paintEvent入下,问题是按钮效果不见了,变成了flat效果.

PaintPat::PaintPat()
{
    setFixedSize(QSize(240, 240));
    image = QImage(240, 240, QImage::Format_RGB16);  
  backColor = qRgb(255,255,255);  
  image.fill(backColor);
}

void PaintPat::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawImage(0, 0, image);
}
快速回复
限100 字节
 
上一个 下一个