Суть в том что есть прогресс бар. И мне нужно изменять переменную speed в разных частях прогресс бара до 50%. К примеру на прогресс баре 16% и текст изменился
(не важно на какой так как это реализовано), потом к примеру эта зеленая полосочка дошла до 32 и текст опять поменялся. Как правильно все это сделать?
Код и скриншоты приложу. Заранее очень благодарен.
#include "usbtest.h"
#include "ui_usbtest.h"
#include "QFile"
#include "QDebug"
#include "QTimer"
#include <QStorageInfo>
#include <QString>
#include "cstring"
#include "string.h"
#include "QWidget"
using namespace std;
long long allbyte;
int first_speed = 0;
usbtest::usbtest(QWidget *parent) :
QDialog(parent),
ui(new Ui::usbtest)
{
ui->setupUi(this);
QFile file("path.txt");
file.open(QIODevice::ReadOnly);
QString file_path = file.readLine();
file.close();
QFile speed("speed.txt");
speed.open(QIODevice::ReadOnly);
first_speed = speed.readLine().toInt();
speed.close();
QStorageInfo storage(file_path);
allbyte = storage.bytesTotal()/1024/1024;
ui->progressBar->setMaximum(allbyte*2);
QTimer* timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
timer->start(1);
}
usbtest::~usbtest()
{
delete ui;
}
int i = 0;
long long local_byte;
double my_rand() {
double a = 0;
a = qrand() % ((first_speed*10 + 9 + 1) - (first_speed-1)*10) + (first_speed-1)*10;
return a/10;
}
void usbtest::onTimeout()
{
if(local_byte != allbyte)
{
string lstrbyte = to_string(local_byte);
ui->size->setText(QString::fromStdString(lstrbyte) + " MByte");
ui->progressBar->setValue(++i);
local_byte++;
if(ui->progressBar->value() == qrand() % ((5 + 1) - 0) + 0)
{
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((15 + 1) - 10) + 10) {
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((23 + 1) - 10) + 20) {
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((40 + 1) - 10) + 35) {
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((49 + 1) - 10) + 39) {
ui->speed->setText((QString::number(my_rand())));
}
else {
ui->speed->setText("Ты лох, нихера не рабботает");
}
}
else {
ui->size->setText("Ти лох");
}
}
------------------------------------------------------------------------------------------------------------------------------ВОТ КОД ГДЕ У МЕНЯ КОСЯК И ГДЕ РЕАЛИЗОВАН ТАЙМЕР (ЧТО БЫ ДОЛГО НЕ ИСКАТЬ)void usbtest::onTimeout()
{
if(local_byte != allbyte)
{
string lstrbyte = to_string(local_byte);
ui->size->setText(QString::fromStdString(lstrbyte) + " MByte");
ui->progressBar->setValue(++i);
local_byte++;
if(ui->progressBar->value() == qrand() % ((5 + 1) - 0) + 0)
{
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((15 + 1) - 10) + 10) {
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((23 + 1) - 10) + 20) {
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((40 + 1) - 10) + 35) {
ui->speed->setText((QString::number(my_rand())));
}
else if (ui->progressBar->value() == qrand() % ((49 + 1) - 10) + 39) {
ui->speed->setText((QString::number(my_rand())));
}
else {
ui->speed->setText("Ты лох, нихера не рабботает");
}
}
else {
ui->size->setText("Ти лох");
}
}