qProgressBar как изменить стандартный цвет и текст во время работы программы

202
21 декабря 2018, 09:10

В общем имею цель добавить в программу qProgressBar но с возможностью его изменения цвета и надписи текста в нём элемент установлен в ui через дизайнер.

Попробовал так :

     ui->pB_DD1->setFormat("% неисправен");
     QPalette p = palette();
     p.setColor(QPalette::Highlight, QColor(Qt::red));
     ui->pB_DD1->setPalette(p);

Ошибок не выводит но при этом ни чего не меняется.

Что я делаю не так ??

Вот ещё вариант :

ui->progressBar->setFormat("% неисправен");
QPalette p = palette();
QPalette pal = ui->progressBar->palette();
pal.setColor(QPalette::Highlight, QColor(Qt::red));
ui->progressBar->setPalette(pal);

Не сработало

можно через CSS -стили :

ui->progressBar->setStyleSheet("*{background-color: blue; border: 1px solid black; }");
ui->progressBar->setStyleSheet("*{color: rgb(255, 255, 0); background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(100,0,0,255), stop: 1 rgba(200,0,0,255)); border: 2px solid grey; border-radius: 5px;}");
ui->progressBar->setStyleSheet("*::chunk {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(0,200,255,255), stop: 1 rgba(0,0,255,255));}"); //  это градиент

НО от такого метода есть проблемма нет полной аналогии с предшественником (моя цель сменить только цвет линии).

Answer 1

В общем я сделал через реализацию CSS-стиля , вот код :

// Конопка "нажимаем"
void MainWindow::on_pushButton_clicked()
{
    ui->progressBar->setFormat(" неисправен");
    ui->progressBar->setValue(1000);
    ui->progressBar->setStyleSheet("QProgressBar{border: 1px solid transparent;text-align: center;"
                                   "color:rgba(255,255,250,255);"
                                   "border-radius: 5px;"
                                   "border-width: 3px;"
                                   "border-image: 9,2,5,2; "
                                   "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(200, 200, 200, 200), stop:1 rgba(0, 0, 0, 200));"
                                    "}"
                                   "QProgressBar::chunk {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(255,200,0,255), stop: 1 rgba(255,0,0,255));}");
}
// кнопка "стукаем" 
void MainWindow::on_pushButton_2_clicked()
{
     ui->progressBar->setStyleSheet(QString()); // возвращаем "стартовый" стиль 
     ui->progressBar->setValue(500);
     ui->progressBar->setFormat(QString("%p [кг/см2]"));
}

Старт запуск программы

после нажатия кнопки "нажимаем"

после нажатия кнопки "стукаем"

READ ALSO
Для чего нужны массивы нулевого размера?

Для чего нужны массивы нулевого размера?

Подскажите, для чего они нужны?

208
Найти количество чётных цифр в записи числа отличных от нуля

Найти количество чётных цифр в записи числа отличных от нуля

Дано целое число nТребуется найти количество четных цифр в записи этого числа отличных от нуля

163
“Attempting to use an incompatible return type” error

“Attempting to use an incompatible return type” error

Не совсем понятно почему в классе наследнике нельзя переопределить метод и изменить возвращаемый тип

166