Ошибки таблиц стилей Qt? - PullRequest
       212

Ошибки таблиц стилей Qt?

13 голосов
/ 23 августа 2011

У меня много ошибок в простых QSS (таблицах стилей Qt).Это ошибки Qt?

Пример:

enter image description here

Таблицы стилей:

#check1 {
  color: red                  //didn't work here
}

#check2 {
  color: red;                 //but work here
  background-color: black
}

#label1 {
  color: blue;
  text-decoration: underline  //work fine here
} 

#label2:hover {
  color: blue; 
  text-decoration: underline  //but didn't work here
}

Источники:

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    app.setStyleSheet(" #check1 {color: red} \
                        #check2 {color: red; background-color: black}  \
                        #label1 {color: blue; text-decoration: underline}  \
                        #label2:hover {color: blue; text-decoration: underline}");
    QWidget w; w.setFixedSize(120,130);

    QCheckBox check1("checkbox1",&w);
    check1.setObjectName("check1");
    check1.move(10,0);

    QCheckBox check2("checkbox1",&w);
    check2.setObjectName("check2");
    check2.move(10,30);

    QLabel label1("label1", &w);
    label1.setObjectName("label1");
    label1.move(10,60);

    QLabel label2("label2", &w);
    label2.setObjectName("label2");
    label2.move(10,90);
    w.show();

    return app.exec();
}

кварт 4.7.3-3;арка линукс;гном 3 запасной режим

Ответы [ 4 ]

8 голосов
/ 04 сентября 2011

Для первого флажка проблема где-то в стиле Gtk +: enter image description here

QLabel, QPushButton или QCheckBox не поддерживают изменения шрифта (включая text-decoration) в селекторе псевдосостояния css :hover. Самый простой виджет, который выглядит так: QToolButton (который можно использовать для замены QLabels, если вам это действительно нужно).
Изменения палитры (цвета и стили переднего и заднего плана) для этого состояния поддерживаются всеми виджетами.

4 голосов
/ 24 августа 2011

Я не могу сказать, в чем проблема с вашим флажком, но следующий лакомый кусочек можно найти в соответствии со ссылкой на таблицу стилей Qt (я не могу найти ее в Интернете, но она есть в Qt Assistant)

QLabel поддерживает блочную модель. Не поддерживает псевдо-состояние: hover.

Другими словами, QLabel: hover не поддерживается.

2 голосов
/ 30 августа 2011

Вместо

// some comment

используйте

/* some comment */

.Я думаю, что они выбрали последнюю форму, так как она невосприимчива к разрыву новой строки.

Кроме того, если она все еще не в порядке, то кажется, что вы столкнулись с ошибками: https://bugreports.qt -project.org//browse/QTBUG-4307.

В качестве обходного пути для установки только цвета текста, попробуйте

#check1:hover { color:red; background-color:transparent; }

, который работал для меня.

0 голосов
/ 02 сентября 2011

Не должно

color: red

быть

color: red;

Отсутствует точка с запятой в нескольких местах в вашем опубликованном коде.

...