QT中 視窗部件的 背景圖片 的設定
轉自:http://blog.sina.com.cn/s/blog_66a133b70100x44p.html
方法一:
首先設定 autoFillBackground 屬性為真
然後定義一個QPalette物件
設定QPalette物件的背景屬性(顏色或圖片)
最後設定QWidget物件的Palette
例項:
QWidget *widget = new QWidget;
widget->setAutoFillBackground(true);
QPalette palette;
//palette.setColor(QPalette::Background, QColor(192,253,123));
palette.setBrush(QPalette::Background, QBrush(QPixmap(":/images/background.png")));
widget->setPalette(palette);
方法二:
QPalette的方法
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFrame *frame = new QFrame;
frame->resize(400, 700);
QPixmap pixmap11(":/images/frame.png");
QPixmap pixmap = pixmap11 .scaled(400,700);
QPalette palette;
palette.setBrush(frame->backgroundRole(),QBrush(pixmap));
frame->setPalette(palette);
frame->setMask(pixmap.mask()); //可以將圖片中透明部分顯示為透明的
frame->setAutoFillBackground(true);
frame->show();
return app.exec();
}
方法三:
setStyleSheet方法( 非常好用的方法 )
設定屬性使背景圖自動調整來適應控制元件的大小。
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFrame *frame = new QFrame;
frame->setObjectName("myframe");
frame->resize(400,700);
frame->setStyleSheet("QFrame#myframe{ border-image : url(:/images/frame.png)}" );
frame->show();
return app.exec();
}
注意程式碼中紅線的部分,設定ObjectName,才能保證setStyleSheet只作用在我們的frame上,不影響其子控制元件的背景設定。之所以用border-image而不用background-image,還是上面的問題,用background-image不能保證圖片大小和控制元件大小一致,圖片不能完全顯示。
方法四:
paintEvent事件方法
//myframe.h檔案
#ifndef MYFRAME_H
#define MYFRAME_H
#include <QWidget>
#include <QtGui>
class MyFrame : public QWidget
{
public:
MyFrame();
void paintEvent(QPaintEvent *event);
};
#endif // MYFRAME_H
//myframe.cpp檔案
#include "myframe.h"
MyFrame::MyFrame()
{
}
void MyFrame::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,400,700,QPixmap("images/frame.png"));
}
//main.cpp檔案
#include <QApplication>
#include <QtGui>
#include "myframe.h"
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
MyFrame *frame = new MyFrame;
frame->resize(400,700);
frame->show();
return app.exec();
}
這個背景圖片不隨著視窗的大小而變化,因為它的固定大小被設定成(400,700)了。重寫QWidget的paintEvent事件,當控制元件發生重繪事件,比如show() 時,系統就會自動呼叫paintEvent函式。
相關文章
- Qt中按鈕背景圖片的切換設定QT
- c# 設定MdiClient窗體的背景圖片C#client
- Qt入門(14)——父視窗部件和子視窗部件QT
- Qt中設定視窗居中顯示QT
- Qt入門(15)——使用視窗部件QT
- JavaScript設定背景圖片JavaScript
- Qt入門(16)——組裝視窗部件QT
- Qt入門(19)——自定義視窗部件QT
- 直播平臺原始碼,qt繪畫事件-設定背景圖片原始碼QT事件
- Qt的視窗背景及視窗風格統一與煥膚QT
- Qt 設定視窗居中顯示QT
- JavaScript設定背景圖片位置JavaScript
- 為view設定背景圖片View
- html+css 設定背景圖片HTMLCSS
- CSS設定背景圖片程式碼CSS
- vscode設定背景圖片VSCode
- qt設定視窗在桌面居中顯示QT
- UIView設定背景圖片幾種方式UIView
- JavaScript動態設定元素背景圖片JavaScript
- 為input文字框設定背景圖片
- qt 視窗預設居中QT
- CSS3 設定多個背景圖片CSSS3
- 人工設定視窗圖示 (轉)
- win10系統如何新增桌面背景設定的視窗Win10
- 設定二維碼圖片背景透明教程
- 設定背景圖片鋪滿整個螢幕
- Android之背景圖片設定為重複Android
- css設定背景圖片鋪滿固定不動CSS
- Qt QtCharts給QChartView換膚,換背景色新增背景圖片QTView
- Qt中(圖片)資源的使用方式QT
- css設定背景圖片樣式程式碼例項CSS
- HTML5 body設定全屏背景圖片 如何讓body的背景圖片自適應整個屏—-實戰經驗HTML
- Qt視窗居中QT
- QT視窗類QT
- windows10背景圖怎麼設定_win10設定桌面背景圖的方法WindowsWin10
- CSS中背景圖片定位方法CSS
- CSS設定背景圖片水平重複和垂直重複CSS
- 如何修改CAD夢想畫圖繪圖視窗的背景顏色繪圖