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的官方文件進行學習,作一些擴充套件!