QWidget派生类对象作为子窗口(父窗口设置了样式)背景为透明问题 |
您所在的位置:网站首页 › 设置页面背景图像的方法包括 › QWidget派生类对象作为子窗口(父窗口设置了样式)背景为透明问题 |
在项目中,我们经常需要自定义一个继承Qwidget派生类的类,当这个类的对象为独立窗口时,一点问题都没有。当我们作为子窗口时,qt会自动将子窗口的背景设置为透明(其他控件均显示),同时这个子窗口的setStyleSheet方法是无效的。有时候我们并不想这样做。于是需要重写paintEvent函数,并设置setBrush画刷,drawRect一个矩形来显示背景。但当软件中有换肤功能时,我们必须在切换皮肤时换颜色。这时候就显得非常的麻烦。 如何达到这个效果有三种方法: 第一种,在生成该界面之后,再调用一次 setAutoFillBackground(true);如: void Form::on_pushButton_clicked() { setAutoFillBackground(true); }第二种是重写PaintEvent函数 void Form::paintEvent(QPaintEvent *e) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); }第三种是(推荐):该方式的结果是,如果父窗口设置了qss,就用父类的。如果自己设置了Qss就用自己的 setStyleSheet("background-color:rgb(0, 255, 127);color:red;"); setAttribute(Qt::WA_StyledBackground);
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |