您的位置 首页 > 数码极客

如何使用qlabel 如何使用验孕棒


QMovie类用来显示简单的并且没有声音的动画,比如GIF格式的图片等。

如果你想要显示视频或者多媒体,可以使用Qt Multimedia 多媒体框架。

显示一个简单的动画,常用的方式如下:

QLabel label;

QMovie *movie = new QMovie("animation;);


label.setMovie(movie);

movie->start();

实例:

运行效果:

主要代码:

(基类为QWidget)

1. movie

/*movie*/


#ifndef MOVIEPLAYER_H

#define MOVIEPLAYER_H


#include <QCheckBox>

#include <QGridLayout>

#include <QHBoxLayout>

#include <QLabel>

#include <QMovie>

#include <QSlider>

#include <QSpinBox>

#include <QToolButton>

#include <QVBoxLayout>


#include <QWidget>


class QCheckBox;

class QGridLayout;

class QHBoxLayout;

class QLabel;

class QMovie;

class QSlider;

class QSpinBox;

class QToolButton;

class QVBoxLayout;


class MoviePlayer : public QWidget

{

Q_OBJECT


public:

MoviePlayer(QWidget *parent = 0);

void openFile(const QString &fileName);


private slots:

void open();

void goToFrame(int frame);

void fitToWindow();

void updateButtons();

void updateFrameSlider();


private:

void createControls();

void createButtons();


QString currentMovieDirectory;

QLabel *movieLabel;

QMovie *movie;

QToolButton *openButton;

QToolButton *playButton;

QToolButton *pauseButton;

QToolButton *stopButton;

QToolButton *quitButton;

QCheckBox *fitCheckBox;

QSlider *frameSlider;

QSpinBox *speedSpinBox;

QLabel *frameLabel;

QLabel *speedLabel;


QGridLayout *controlsLayout;

QHBoxLayout *buttonsLayout;

QVBoxLayout *mainLayout;

};


#endif

2. movie

/*movie*/


#include <QtGui>

#include <QString>

#include <QStyle>

#include <QFileDialog>


#include "movie"


MoviePlayer::MoviePlayer(QWidget *parent)

: QWidget(parent)

{

movie = new QMovie(this);

movie->setCacheMode(QMovie::CacheAll);


movieLabel = new QLabel(tr("No movie loaded"));

movieLabel->setAlignment(Qt::AlignCenter);

movieLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

movieLabel->setBackgroundRole(QPalette::Shadow);

movieLabel->setAutoFillBackground(true);


currentMovieDirectory = ".gif";


createControls();

createButtons();


connect(movie, SIGNAL(frameChanged(int)), this, SLOT(updateFrameSlider()));

connect(movie, SIGNAL(stateChanged(QMovie::MovieState)),

this, SLOT(updateButtons()));

connect(fitCheckBox, SIGNAL(clicked()), this, SLOT(fitToWindow()));

connect(frameSlider, SIGNAL(valueChanged(int)), this, SLOT(goToFrame(int)));

connect(speedSpinBox, SIGNAL(valueChanged(int)),

movie, SLOT(setSpeed(int)));


mainLayout = new QVBoxLayout;

mainLayout->addWidget(movieLabel);

mainLayout->addLayout(controlsLayout);

mainLayout->addLayout(buttonsLayout);

setLayout(mainLayout);


updateFrameSlider();

updateButtons();


setWindowTitle(tr("Movie Player"));

resize(400, 400);

}


void MoviePlayer::open()

{

QString fileName = QFileDialog::getOpenFileName(this, tr("Open a Movie"),

currentMovieDirectory);

if (!())

openFile(fileName);

}


void MoviePlayer::openFile(const QString &fileName)

{

currentMovieDirectory = QFileInfo(fileName).path();


movie->stop();

movieLabel->setMovie(movie);

movie->setFileName(fileName);

movie->start();


updateFrameSlider();

updateButtons();

}


void MoviePlayer::goToFrame(int frame)

{

movie->jumpToFrame(frame);

}


void MoviePlayer::fitToWindow()

{

movieLabel->setScaledContents(fitCheckBox->isChecked());

}


void MoviePlayer::updateFrameSlider()

{

bool hasFrames = (movie->currentFrameNumber() >= 0);


if (hasFrames)

{

if (movie->frameCount() > 0)

{

frameSlider->setMaximum(movie->frameCount() - 1);

}

else

{

if (movie->currentFrameNumber() > frameSlider->maximum())

frameSlider->setMaximum(movie->currentFrameNumber());

}

frameSlider->setValue(movie->currentFrameNumber());

}

else

{

frameSlider->setMaximum(0);

}

frameLabel->setEnabled(hasFrames);

frameSlider->setEnabled(hasFrames);

}


void MoviePlayer::updateButtons()

{

playButton->setEnabled(movie->isValid() && movie->frameCount() != 1

&& movie->state() == QMovie::NotRunning);

pauseButton->setEnabled(movie->state() != QMovie::NotRunning);

pauseButton->setChecked(movie->state() == QMovie::Paused);

stopButton->setEnabled(movie->state() != QMovie::NotRunning);

}


void MoviePlayer::createControls()

{

fitCheckBox = new QCheckBox(tr("Fit to Window"));


frameLabel = new QLabel(tr("Current frame:"));


frameSlider = new QSlider(Qt::Horizontal);

frameSlider->setTickPosition(QSlider::TicksBelow);

frameSlider->setTickInterval(10);


speedLabel = new QLabel(tr("Speed:"));


speedSpinBox = new QSpinBox;

speedSpinBox->setRange(1, 9999);

speedSpinBox->setValue(100);

speedSpinBox->setSuffix(tr("%"));


controlsLayout = new QGridLayout; //格子布局

controlsLayout->addWidget(fitCheckBox, 0, 0, 1, 2);

controlsLayout->addWidget(frameLabel, 1, 0);

controlsLayout->addWidget(frameSlider, 1, 1, 1, 2);

controlsLayout->addWidget(speedLabel, 2, 0);

controlsLayout->addWidget(speedSpinBox, 2, 1);

}


void MoviePlayer::createButtons() //按钮水平布局

{

QSize iconSize(36, 36);


openButton = new QToolButton;

openButton->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton));

openButton->setIconSize(iconSize);

openButton->setToolTip(tr("Open File"));

connect(openButton, SIGNAL(clicked()), this, SLOT(open()));


playButton = new QToolButton;

playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));

playButton->setIconSize(iconSize);

playButton->setToolTip(tr("Play"));

connect(playButton, SIGNAL(clicked()), movie, SLOT(start()));


pauseButton = new QToolButton;

pauseButton->setCheckable(true);

pauseButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));

pauseButton->setIconSize(iconSize);

pauseButton->setToolTip(tr("Pause"));

connect(pauseButton, SIGNAL(clicked(bool)), movie, SLOT(setPaused(bool)));


stopButton = new QToolButton;

stopButton->setIcon(style()->standardIcon(QStyle::SP_MediaStop));

stopButton->setIconSize(iconSize);

stopButton->setToolTip(tr("Stop"));

connect(stopButton, SIGNAL(clicked()), movie, SLOT(stop()));


quitButton = new QToolButton;

quitButton->setIcon(style()->standardIcon(QStyle::SP_DialogCloseButton));

quitButton->setIconSize(iconSize);

quitButton->setToolTip(tr("Quit"));

connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));


buttonsLayout = new QHBoxLayout;

buttonsLayout->addStretch();

buttonsLayout->addWidget(openButton);

buttonsLayout->addWidget(playButton);

buttonsLayout->addWidget(pauseButton);

buttonsLayout->addWidget(stopButton);

buttonsLayout->addWidget(quitButton);

buttonsLayout->addStretch();

}

3. main.cpp

/*main.cpp*/


#include <QApplication>

#include "movie"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);


MoviePlayer player;

();


return a();

}

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何使用qlabel,如何使用验孕棒,如何使用Qlable,如何使用qlab导出dicom,如何使用抗原检测试剂盒,如何使用chatgpt”边界阅读