qt 文件大图标、列表等样式切换_Qt之等待提示框三(QLabel进行多图片切换)

本文介绍了一个使用Qt创建的加载等待组件,通过QLabel显示不断变化的图片来形成加载动画效果。加载组件包含账号显示和等待提示文本,并在账号过长时进行截断处理。此外,详细描述了图片切换的逻辑和计数重置的方法。
摘要由CSDN通过智能技术生成

#include "loading_widget.h"

LoadingWidget::LoadingWidget(QWidget *parent)

: QWidget(parent)

{

index = 1;

loading_label = new QLabel();

account_label = new QLabel();

waiting_label = new QLabel();

QPixmap pixmap(QString(":/loginDialog/") +

QString::number(index, 10));

loading_label->setFixedSize(pixmap.size());

loading_label->setPixmap(pixmap);

loading_label->setScaledContents(true);

QVBoxLayout *v_layout = new QVBoxLayout();

v_layout->addWidget(account_label);

v_layout->addWidget(waiting_label);

v_layout->setSpacing(15);

v_layout->setContentsMargins(0, 0, 0, 0);

QHBoxLayout *h_layout = new QHBoxLayout();

h_layout->addStretch();

h_layout->addWidget(loading_label);

h_layout->addLayout(v_layout);

h_layout->addStretch();

h_layout->setSpacing(20);

h_layout->setContentsMargins(0, 0, 0, 30);

timer = new QTimer(this);

timer->setInterval(100);

connect(timer, &QTimer::timeout, this,

&LoadingWidget::updatePixmap);

this->setLayout(h_layout);

this->translateLanguage();

}

LoadingWidget::~LoadingWidget()

{

}

void LoadingWidget::translateLanguage()

{

waiting_label->setText(tr("waiting"));

}

void LoadingWidget::setAccount(QString account)

{

this->account = account;

}

void LoadingWidget::start(bool is_start)

{

if(is_start)

{

//进行账号的转化,防止过长显示不全,过长用...代替

QString elided_text;

bool is_elided = Util::updateText(account, 200,

elided_text);

if(!is_elided)

{

elided_text = account;

}

account_label->setText(tr("hi") + elided_text);

timer->start();

}

else

{

timer->stop();

index = 1;

loading_label->setPixmap(QPixmap(QString(":/loginDialog/")

+ QString::number(index, 10)));

}

}

void LoadingWidget::updatePixmap()

{

//若当前图标下标超过8表示到达末尾,则重新计数

index++;

if(index > 8)

{

index = 1;

}

QPixmap pixmap(":/loginDialog/" + QString::number(index,

10));

loading_label->setPixmap(pixmap);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值