Работа с css в qt

190
03 января 2019, 17:30

Пытаюсь сделать что бы QLabel приобрел полосатую окраску:

   ui->l_KTT_B_r->setStyleSheet("QLabel{ "
                                "background: qlineargradient(to right, rgba(200, 150, 155, 255) 50%, rgba(255, 20, 20, 255) 0);"
                                 "}");

Не вышло.

Потом попробовал сделать градиент:

QLinearGradient * gradient;
//выделение памяти для градиента в конструкторе без параметров
gradient = new QLinearGradient();
//установка стартовой и конечной точек градиента
gradient->setStart(60, 120);
gradient->setFinalStop(80, 120);
//установка цветов градиента
gradient->setColorAt(0.43, QColor(280,10,20));
gradient->setColorAt(1.0, QColor(30,0,0));
ui->label->setGraphicsEffect(gradient);
//    ui->label->setStyleSheet(gradient);

Снова не вышло.

Потом решил кнопку изменить:

создал файл my_css_button.qss. Файл добавлен к проекту в группе "Другие файлы"

/* Simple Style */
QPushButton {
    min-width: 2em;
} 
QPushButton {
    min-width: 1.8em;
        background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1,
                                                        stop:0 rgba(100, 200, 100, 255),
                                                        stop:1 rgba(133,255,135,255),
                                                        stop:0.4 rgba(131,255,133,255));
        color: rgba(0,0,0,255);
    border: 1px solid rgba(255,255,255,255);            
    border-radius:5px;
    border-image:9,2,5,2;
}
QPushButton:hover {
        background: qlineargradient(x1:0, y1:1, x2:0, y2:0,
                                stop:1,rgba(133,133,135,255),
                                stop:0.4 rgba(131,31,133,255),
                                stop:0.2 rgba(31,31,150,255));
}
QPushButton:pressed {
    background: qlineargradient(x1:0, y1:1, x2:1, y2:0,
                            stop:0 rgba(100, 200, 100, 255),
                            stop:0.6 rgba(133,255,135,255),
                            stop:0.5 rgba(131,255,133,255));
    border: 1px solid rgba(18,18,212,255);
}
QPushButton:checked {
        background: qlineargradient(x1:1, y1:0, x2:0, y2:1,
                                stop:1 rgba(133,133,135,255),
                                stop:0.4 rgba(31,31,33,255));
    border: 1px solid rgba(18,18,212,255);
}
QPushButton:checked:hover {
        background: qlineargradient(x1:1, y1:1, x2:0, y2:0,
                                stop:1 rgba(31,31,33,255),
                                 stop:0.4 rgba(133,133,135,255),
                                stop:0.1 rgba(0,0,150,255));
}

Вот его вызов :

   QFile file(":/my_css_button.qss");
   file.open(QFile::ReadOnly);
   QString strCSS = QLatin1String(file.readAll());
   ui->pB->setStyleSheet(strCSS);

только рамку кнопки смог от рисовать.

Я пришёл к пониманию какого-то половинчатого css выполнения, что то переводиться в qss что то нет, а как с этим работать не где не написано.

Что я делаю не так? Как css превратить qss ?

Answer 1

Я так подозреваю, что Вам надо не background, а background-color использовать.

ui->l_KTT_B_r->setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 178, 102, 255), stop:0.55 rgba(235, 148, 61, 255), stop:0.98 rgba(0, 0, 0, 255), stop:1 rgba(0, 0, 0, 0));");

Сам градиент можно из qtcreator'а/qtdesigner'а скопировать.

READ ALSO
Слетает верстка ThimPress (Wordpress) шаблона в браузере Safari

Слетает верстка ThimPress (Wordpress) шаблона в браузере Safari

Прошу о помощи знатоков wp, сам я не смог найти в какую сторону копать

176
Флажок в javaScript

Флажок в javaScript

Я начинающий javaScript разработчик, поэтому прошу не пинать строго за данный вопросИмеется следующий javaScript код:

180
Получение js объекта из строки

Получение js объекта из строки

Есть файлjs такого вида

173
Объединить 2 MediaStreamAudioSourceNode на JS

Объединить 2 MediaStreamAudioSourceNode на JS

Есть звонилка на webRTCТребуется записывать разговоры средствами JS

169