QWidget背景设置

上图:



方法1. setStylSheet{"QDialog{background-image:url()"}}  //使用styleSheet 这种方法的好处是继承它的dialog都会自动设置背景,例如更换皮肤就是一个不错的选择

方法2. QPalette pal;

            pal.setBrush(QPalette::Background,QBrush(QPixmap("")));
            this->setPalette(pal);

方法3.在paintEvent(QPaintEvent *)事件中                    //这种用于各种自定义控件
     QPainter painter(this);
     painter.drawPixmap(rect(), QPixmap&);
 


 //设置窗口的背景
   QPixmap pixmap(":/icon/background.jpg");
   QPalette palette = this->palette();
   palette.setBrush(this->backgroundRole(),
                QBrush(pixmap.scaled(this->size(),
                       Qt::IgnoreAspectRatio,
                       Qt::SmoothTransformation)));
   this->setPalette(palette);


附:Qt之设置QWidget背景色(QStyleOption->drawPrimitive(QStyle::PE_Widget)方法比较有趣)

QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。


Qt中窗口背景的设置,下面介绍三种方法。


1.使用QPalette
2.使用Style Sheet
3.绘图事件

一般我不用QSS设置窗口背景,也不建议使用。(这里是对于窗口而,如果是子部件当然可以)。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。

使用QPalette

使用QPalette来设置背景色

m_pWidget = new QWidget(this);
m_pWidget->setGeometry(0, 0, 300, 100);
QPalette pal(m_pWidget->palette());

pal.setColor(QPalette::Background, Qt::black); //设置背景黑色
m_pWidget->setAutoFillBackground(true);
m_pWidget->setPalette(pal);
m_pWidget->show();

使用Style Sheet

使用样式表来设置背景色,可以参考:Qt Style Sheets文档

m_pWidget = new QWidget(this);
m_pWidget->setGeometry(0, 0, 300, 100);
m_pWidget->setStyleSheet("background-color:black;");
m_pWidget->show();

如果从QWidget子类化一个Widget,为了能够使用样式表则需要为自定义Widget提供paintEvent事件。

void CustomWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);

QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
绘图事件

重写paintEvent,使用QPainter来绘制背景。

void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);

QPainter p(this);
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.drawRect(rect());
}

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读