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