Qt支援在介面上顯示多種儲存格式圖片(bmp、jpg、jpeg、gif、png等等),支援各種各樣的繪圖功能(各種圖形,包括各種填充操作),所以,使用Qt做出漂亮的圖形介面是沒有任何問題的。在這裡,簡單的記錄一下Qt的介面顯示圖片功能。
能夠顯示圖片的組件非常多,幾乎所有可見的對象都可以顯示圖片。
一、介面上顯示靜態圖片
在這個類的聲明中,重寫了基類的paintEvent函數,這個函數中我們主要實現某些介面重繪工作!繪製曲線與圖片的時候,主要使用到的Qt類有:QPainter、QPixmap、QImage等,輔助類(定位元影像片、確定形狀等作用):QLine、QLineF、QRect、QRectF等。
class MainWindow
: public
QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void paintEvent(QPaintEvent *event);
... ...
}
類的實現中,paintEvent函數實現如下:
void MainWindow::paintEvent(QPaintEvent
*event)
{
QRectF target(10,10,330,250);
QRectF source(0,0,320,240);
QPixmap image("./images/help.png");
QPainter painter(this);
painter.drawPixmap(target,image,source);
}
二、介面上顯示GIF圖片
以QMainWindow為基類派生新類,當然你可以完全沒有必要像我這樣做
GIF繪製工作是在衍生類別的構造中完成的。一般情況下,gif圖片由QMovie對象載入,顯示是在QLabel對象上完成的。
class MainWindow
: public
QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void paintEvent(QPaintEvent *event);
private:
... ...
QMovie *movie;
};
類的實現:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow){ movie = new QMovie("./gif/mdcg.gif");//載入工程目錄下的gif目錄下的GIF檔案
ui->label->setMovie(movie);
this->movie->start();
}
實現後的效果