1. 程式人生 > > Qt學習:QLabel的用法及其程式示例

Qt學習:QLabel的用法及其程式示例

主要成員函式:

1.void setText(QString); //設定label框內的文字.
2.void hide(); //隱藏label框.
3.void setBuddy(QWidget*); //把另一個部件設為label框的夥伴,方便快捷使用.
4.void clear(); //清空label框內所有內容.
5.void setPixmap(QPixmap(QString)); //設定圖片.
6.void setMovie(QMovie*); //設定電影.
7.void setScaledContents(bool); //設定是否按比例填充滿整個label框(非常重要)
8.void setToolTip(QString); //設定資訊提示,滑鼠放在label框上面會自動跳出文字.
9.void setToolTipDuration(int); //設定資訊提示的持續時間,單位是毫秒.
10.void setAlignment(Qt::Alignment); //設定label框的對齊格式.
11.void setStyleSheet(QString); //設定label框的樣式.

根據上面的QLabel的用法,下面有個關於QLabel的程式程式碼示例:
下面是程式執行後的情況:
這裡寫圖片描述

這裡寫圖片描述

首先進行通過Qt設計師進行佈局:
這裡寫圖片描述

以下是”c.cpp內的程式碼:”程式碼中包含註釋,方便理解.

#include "c.h"

c::c(QWidget *parent)
    : QMainWindow(parent)
{
    //應用Qt設計師
    ui.setupUi(this);
    //修改標題.
    this->setWindowTitle(QString::fromLocal8Bit("QLabel的程式例項:"));
    //給QStringList填充進去圖片.
    initPictureList();
    //給QMovie物件申請一塊空間.
    movie = new QMovie;
    //給兩個QLabel物件設定新的文字.
    ui.movieLabel->setText(QString::fromLocal8Bit("未顯示電影"));
    ui.pictureLabel->setText(QString::fromLocal8Bit("未顯示圖片"));

    //設定兩個label框的內容位於中間.
    ui.movieLabel->setAlignment(Qt::AlignCenter | Qt::AlignHCenter);
    ui.pictureLabel->setAlignment(Qt::AlignCenter | Qt::AlignHCenter);

    //初始的時候上一張按鈕時無法點選的,因為沒有上一張.
    ui.previousPictureButton->setEnabled(false);

    //給movieLabel設定提示框,當滑鼠放在label上就會出現文字提示.
    ui.movieLabel->setToolTip(QString::fromLocal8Bit("電影真好看")); 
    //設定文字提示的持續時間為5000毫秒,也就是5秒後自動消失.
    ui.movieLabel->setToolTipDuration(1000);

    //設定兩個label框自動填充.
    ui.movieLabel->setScaledContents(true);
    ui.pictureLabel->setScaledContents(true);


    //把printLineEdit設為printLabel的夥伴,這樣的話你按alt+R就會讓游標位於行編輯框內.注意:設定label名字的時候要&R.
    ui.printLabel->setBuddy(ui.printLineEdit);

    //連線訊號與槽.
    connect(ui.startButton, SIGNAL(clicked()), this, SLOT(startMovieLabelSlot()));
    connect(ui.continueButton, SIGNAL(clicked()), this, SLOT(continueMovieLabelSlot()));
    connect(ui.previousPictureButton, SIGNAL(clicked()), this, SLOT(showPreviousPictureSlot()));
    connect(ui.nextPictureButton, SIGNAL(clicked()), this, SLOT(showNextPictureSlot()));
}

c::~c()
{

}
//點選開始按鈕的槽函式.
void c::startMovieLabelSlot()
{
    //設定要播放的電影的路徑.注意你要把gif檔案放到對應的exe程式下.
    movie->setFileName("Movie/0.gif");
    //movieLabel應用movie.
    ui.movieLabel->setMovie(movie);
    //開始播放
    movie->start();
}
//點選暫停/繼續按鈕的槽函式.
void c::continueMovieLabelSlot()
{
    //判斷當前電影的狀態.
    if (movie->state() == QMovie::Running)
    {
        movie->setPaused(true);
        ui.continueButton->setText(QString::fromLocal8Bit("繼續"));
    }
    else if (movie->state() == QMovie::Paused)
    {
        movie->setPaused(false);
        ui.continueButton->setText(QString::fromLocal8Bit("暫停"));
    }
}
void c::initPictureList()
{
    //把所有照片的路徑都放到QStringList裡去.
    for (int i = 0; i < 10; ++i)
    {
        QString path = "Pixmap/" + QString::number(i) + ".jpg";
        pictureList.push_back(path);
    }
}
//點選上一張按鈕的槽函式.
void c::showPreviousPictureSlot()
{
    --pictureNumber;
    ui.pictureLabel->setPixmap(QPixmap(pictureList[pictureNumber]));
    if (pictureNumber == 0)
    {
        ui.previousPictureButton->setEnabled(false);
    }
    ui.nextPictureButton->setEnabled(true);
}
//點選下一張按鈕的槽函式.
void c::showNextPictureSlot()
{
    if (ui.pictureLabel->pixmap() != 0)
        ++pictureNumber;
    ui.pictureLabel->setPixmap(QPixmap(pictureList[pictureNumber]));
    if (pictureNumber == 9)
    {
        ui.nextPictureButton->setEnabled(false);
    }
    if (pictureNumber != 0)
        ui.previousPictureButton->setEnabled(true);
}

以下是”c.h”內的程式碼:

#ifndef C_H
#define C_H

#include <QtWidgets/QMainWindow>
#include "ui_c.h"
#include <QMessageBox>
#include <QLabel>
#include <QPushButton>
#include <QMovie>
#include <QPixmap>
#include <QString>

class c : public QMainWindow
{
    Q_OBJECT

public:
    c(QWidget *parent = 0);
    ~c();
private slots:
    void startMovieLabelSlot();
    void continueMovieLabelSlot();
    void showPreviousPictureSlot();
    void showNextPictureSlot();

private:
    void initPictureList();
    Ui::cClass ui;
    QMovie *movie;
    QStringList pictureList;
    int pictureNumber = 0;
};

#endif // C_H

最後是”main.cpp內的程式碼:”

#include "c.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    c w;
    w.show();
    return a.exec();
}

關於QMovie類的操作可以去查閱Qt的官方文件進行學習,作一些擴充套件!