Qt之QWidget设置窗口背景图片的几种方法
Qt之QWidget設(shè)置窗口背景圖片的幾種方法
幾種方法如下:
1.使用調(diào)色板QPalette來設(shè)置圖片
QPalette pal =this->palette(); pal.setBrush(QPalette::Background,QBrush(QPixmap(":/bg.jpg"))); setPalette(pal);首先獲得Widget的調(diào)色板,然后設(shè)置設(shè)置調(diào)色板背景(setBrush),最后將調(diào)色板設(shè)置到Widget中。
2.在paintEvent事件中繪制圖片
void Widget::paintEvent(QPaintEvent * ev) {QPainter painter(this);painter.drawPixmap(rect(),QPixmap(":/bg.jpg"),QRect()); }drawPixmap在Widget的整個矩形區(qū)域繪制背景圖片,第三個參數(shù)為要繪制的圖片區(qū)域,傳入空的矩形表示整個圖片區(qū)域。通過這種方式可以將圖片平鋪到窗口上,缺點就是要使用paintEvent事件需要新建一個類,不適合子窗口。
3.使用樣式表(setStyleSheet)
???使用樣式表可以很方便設(shè)置界面,而且非常高效,還能讓界面和邏輯分離。設(shè)置背景圖片的語句也很簡單。
這里使用border-image屬性可以讓圖片平鋪到窗口。所以樣式表比較適合子窗口來使用。
4.使用間接的方式來設(shè)置背景
???比如說在窗口上覆蓋一個QLabel,這個label始終與窗口一樣大。然后在label中設(shè)置圖片,視覺效果上和直接給窗口設(shè)置背景圖片一樣。
Widget::Widget(QWidget *parent) :QWidget(parent) {m_lblBg = new QLabel(this);m_lblBg ->setPixmap(QPixmap(":/bg.jpg"));m_lblBg ->setScaledContents(true); } void Widget::resizeEvent(QResizeEvent * ev) {m_lblBg->resize(this->size()); }創(chuàng)建一個label作為Widget的子窗口,然后設(shè)置圖片。通過在Widget的resizeEvent事件中設(shè)置label的大小與Widget一致。這里需要注意調(diào)用QLabel的setScaledContents(true),否則效果和第一種一樣。由于QLabel可以用來顯示動圖因此使用這種方式可以實現(xiàn)窗口的動態(tài)背景圖片。
總結(jié)
以上是生活随笔為你收集整理的Qt之QWidget设置窗口背景图片的几种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黎曼ζ函数(中文维基百科)
- 下一篇: Qt设置按钮背景图片,点击不显示背景