程序示例精選
Qt+C++跑馬燈-指示燈-風(fēng)扇-虛線燈帶-動(dòng)畫仿真
如需安裝運(yùn)行環(huán)境或遠(yuǎn)程調(diào)試,見文章底部個(gè)人QQ名片,由專業(yè)技術(shù)人員遠(yuǎn)程協(xié)助!
前言
這篇博客針對<<Qt+C++跑馬燈-指示燈-風(fēng)扇-虛線燈帶-動(dòng)畫仿真>>編寫代碼,代碼整潔,規(guī)則,易讀。 學(xué)習(xí)與應(yīng)用推薦首選。
文章目錄
一、所需工具軟件
二、使用步驟
????????1. 引入庫
????????2. 代碼實(shí)現(xiàn)
? ? ? ? 3. 運(yùn)行結(jié)果
三、在線協(xié)助
一、所需工具軟件
1. VS, Qt
2. C++
二、使用步驟
1.引入庫
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_MainWindow.h"
#include<iostream>
#include <QThread>
#include <chrono>
#include <QObject>
#include <QThread>
#include <QDebug>
#include <QFile>
#include <QTimer>
#include <QMutex>
#include <QWaitCondition>
#include <QDebug>
#include<QImage>
#include<QPixmap>
#include<QTransform>
#include<QPropertyAnimation>
#include<QGraphicsPixmapItem>
#include<QGraphicsScene>
#include <QtConcurrent/QtConcurrent>
2. 代碼實(shí)現(xiàn)
代碼如下:
VMarqueeLabel::VMarqueeLabel(QWidget *parent)
: QLabel(parent)
{
connect(&m_Timer, &QTimer::timeout, this, [=] {
if (isVisible()) {
m_PosX -= 1;
if (parent) {
parent->update();
}
else {
update();
}
}
});
}
VMarqueeLabel::~VMarqueeLabel()
{
clear();
}
void VMarqueeLabel::clear()
{
m_Timer.stop();
m_PosX = ORIGIN_X;
QLabel::clear();
}
void VMarqueeLabel::setText(const QString& text)
{
clear();
QString content = QStringLiteral("<font style='font-family:MicrosoftYaHei;font-size:14px;color: #01EEC3;'>%1</font>").arg(text);
m_Timer.start(10);
adjustSize();
m_PosX = width();
}
void VMarqueeLabel::paintEvent(QPaintEvent * evt)
{
//計(jì)算x,y坐標(biāo)
QTextDocument doc;
doc.setHtml(text());
int height = doc.documentLayout()->documentSize().height();
int y = (this->height() - height) / 2;
//繪制
QPainter painter(this);
//先畫背景
QStyleOption opt;
opt.init(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
painter.translate(m_PosX, y);
doc.drawContents(&painter);
}
QSimpleLed::ColorGroup QSimpleLed::smColorPalette[6] {
// CUSTOM
{ QColor(0, 0, 0), QColor(0, 0, 0), QColor(0, 0, 0), QColor(0, 0, 0) },
// RED
{ QColor(255, 0, 0), QColor(191, 0, 0), QColor(28, 0, 0), QColor(128, 0, 0) },
// GREEN
{ QColor(0, 255, 0), QColor(0, 191, 0), QColor(0, 28, 0), QColor(0, 128, 0) },
// BLUE
{ QColor(0, 0, 255), QColor(0, 0, 191), QColor(0, 0, 28), QColor(0, 0, 128) },
// YELLOW
{ QColor(255, 255, 0), QColor(191, 191, 0), QColor(28, 28, 0), QColor(128, 128, 0) },
// ORANGE
{ QColor(255, 165, 0), QColor(255, 113, 1), QColor(20, 8, 5), QColor(99, 39, 24) },
};
QSimpleLed::QSimpleLed(QWidget *parent, QSimpleLed::LEDCOLOR color)
: QAbstractButton(parent)
, mColor(color)
{
setCheckable(true);
setMinimumSize(64, 64);
}
void QSimpleLed::setStates(QSimpleLed::LEDSTATES states)
{
switch (states) {
case ON:
resetStatus();
setChecked(true);
mStates = ON;
break;
case OFF:
resetStatus();
break;
case BLINK:
resetStatus();
if (!mBlinkTimer) {
mBlinkTimer = new QTimer(this);
connect(mBlinkTimer, &QTimer::timeout, this, &QSimpleLed::onBlinkTimerTimeout);
}
mBlinkTimer->setInterval(mInterval);
mBlinkTimer->start();
mStates = BLINK;
break;
default:
qDebug() << "LED - unknown states!!!";
}
update();
}
void QSimpleLed::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
qreal realSize = qMin(width(), height());
QRadialGradient radialGent;
//
// gradient - 1
radialGent = QRadialGradient(QPointF(-500, -500)
, 1500
, QPointF(-500, -500));
radialGent.setColorAt(0, QColor(224, 224, 224));
radialGent.setColorAt(1, QColor(28, 28, 28));
QPainter painter(this);
painter.setBrush(QBrush(radialGent));
painter.drawEllipse(QPointF(0, 0), 500, 500);
//
// gradient - 2
radialGent = QRadialGradient(QPointF(500, 500)
, 1500
, QPointF(500, 500));
radialGent.setColorAt(0, QColor(224, 224, 224));
radialGent.setColorAt(1, QColor(28, 28, 28));
painter.setBrush(QBrush(radialGent));
painter.drawEllipse(QPointF(0, 0), 450, 450);
if (isChecked()) {
//
// gradient - 3
radialGent = QRadialGradient(QPointF(-500, -500)
, 1500
, QPointF(-500, -500));
radialGent.setColorAt(0, smColorPalette[mColor].on0);
radialGent.setColorAt(1, smColorPalette[mColor].on1);
} else {
//
// gradient - 4
radialGent = QRadialGradient(QPointF(500, 500)
, 1500
, QPointF(500, 500));
radialGent.setColorAt(0, smColorPalette[mColor].off0);
radialGent.setColorAt(1, smColorPalette[mColor].off1);
}
painter.setBrush(QBrush(radialGent));
painter.drawEllipse(QPoint(0, 0), 400, 400);
}
void QSimpleLed::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
update();
}
void QSimpleLed::mousePressEvent(QMouseEvent *event)
{
Q_UNUSED(event);
}
void QSimpleLed::onBlinkTimerTimeout()
{
setChecked(!isChecked());
}
3. 運(yùn)行結(jié)果
?
??
三、在線協(xié)助:
如需安裝運(yùn)行環(huán)境或遠(yuǎn)程調(diào)試,見文章底部個(gè)人 QQ 名片,由專業(yè)技術(shù)人員遠(yuǎn)程協(xié)助!
1)遠(yuǎn)程安裝運(yùn)行環(huán)境,代碼調(diào)試
2)Qt, C++, Python入門指導(dǎo)
3)界面美化
4)軟件制作
當(dāng)前文章連接:Python+Qt桌面端與網(wǎng)頁端人工客服溝通工具_(dá)alicema1111的博客-CSDN博客
博主推薦文章:python人臉識別統(tǒng)計(jì)人數(shù)qt窗體-CSDN博客
博主推薦文章:Python Yolov5火焰煙霧識別源碼分享-CSDN博客
? ? ? ? ? ? ? ? ? ? ? ? ?Python OpenCV識別行人入口進(jìn)出人數(shù)統(tǒng)計(jì)_python識別人數(shù)-CSDN博客
個(gè)人博客主頁:alicema1111的博客_CSDN博客-Python,C++,網(wǎng)頁領(lǐng)域博主文章來源:http://www.zghlxwxcb.cn/news/detail-660038.html
博主所有文章點(diǎn)這里:alicema1111的博客_CSDN博客-Python,C++,網(wǎng)頁領(lǐng)域博主文章來源地址http://www.zghlxwxcb.cn/news/detail-660038.html
到了這里,關(guān)于Qt+C++跑馬燈-指示燈-風(fēng)扇-虛線燈帶-動(dòng)畫仿真的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!