Russian Qt Forum
Июнь 16, 2024, 05:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: стиль QLineEdit в QComboBox  (Прочитано 14113 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Апрель 20, 2010, 02:49 »

Надо стилизовать QLineEdit внутри QComboBox. И QComboBox и QLineEdit имеют каждый свой стиль.

Код
C++ (Qt)
   QComboBox *bb = new QComboBox;
   QLineEdit *lb = new QLineEdit;
   bb->setDuplicatesEnabled(false);
   bb->setEditable(true);
   bb->setLineEdit(lb);
   bb->addItem("1");
   bb->addItem("2");
   bb->addItem("3");
 
   bb->setStyleSheet("QComboBox{color:cyan}");
   lb->setStyleSheet("QLineEdit{color:magenta}");
   bb->show();
 

Вопрос - почему QLineEdit в итоге стилизуется cyan-ом а не magent-ой? Смахивает на баг.

Qt 4.5.3, Debian Squeeze.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 20, 2010, 10:19 »

QLineEdit{background-color:magenta}
?
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Апрель 20, 2010, 12:35 »

QLineEdit{background-color:magenta}
?

нет, мне нужно установить цвет текста - это задаётся через "color". Если убрать

Код
C++ (Qt)
bb->setStyleSheet("QComboBox{color:cyan}");

то всё работает. Если вернуть, то стиль комбобокса перекрывает стиль lineedit-a.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Апрель 20, 2010, 14:41 »

круто:

http://bugreports.qt.nokia.com/browse/QTBUG-4322

чинить даже не собираются  Веселый
Записан
SABROG
Гость
« Ответ #4 : Апрель 20, 2010, 16:00 »

нет, мне нужно установить цвет текста
Делайте разницу, у QComboBox нет текста, поэтому это свойство ему не нужно, в то время как текст есть у QLineEdit.

Код
C++ (Qt)
   bb->setStyleSheet("QComboBox {border-radius: 6px; border: 3px solid green;}");
   lb->setStyleSheet("QLineEdit {color: blue}");
 
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Апрель 20, 2010, 16:29 »

ну P2 это высокий приоритет
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Апрель 20, 2010, 17:41 »

Делайте разницу, у QComboBox нет текста, поэтому это свойство ему не нужно, в то время как текст есть у QLineEdit.

в QComboBox color используется не только для текста
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Апрель 20, 2010, 17:57 »

>>чинить даже не собираются
такого ни где не сказано
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Апрель 20, 2010, 18:08 »

>>чинить даже не собираются
такого ни где не сказано

Affects Version/s:   4.5.2
Fix Version/s:   Some future release

уже 4.7 на носу, подвижек нет. Когда тогда это  починят - в 4.9?  В замешательстве
Записан
SABROG
Гость
« Ответ #9 : Апрель 20, 2010, 18:09 »

в QComboBox color используется не только для текста

color это foreground, а foreground это текст. Если нужен цветной квадратик вместо серого виджета, то это background.
Текст в QComboBox присутствует только в двух виджетах: QLineEdit и QListWidget, сам QComboBox лишь играет роль контейнера.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Апрель 20, 2010, 18:13 »

color это foreground, а foreground это текст.

foreground - это слой рисуемый поверх background, более ничего. Использовать цвет foreground-a может любой элемент - хоть текст, хоть dropdown кнопка (как в QComboBox)

QListWidget

там QListView
« Последнее редактирование: Апрель 20, 2010, 18:16 от Alex Custov » Записан
SABROG
Гость
« Ответ #11 : Апрель 20, 2010, 18:35 »

foreground - это слой рисуемый поверх background, более ничего. Использовать цвет foreground-a может любой элемент - хоть текст, хоть dropdown кнопка (как в QComboBox)
Тоже не верно:
Код
CSS
QComboBox::down-arrow {color: red;}
 
Не работает. А вот background работает - затирает стрелку напрочь, значит стрелка - не текст, а картинка, а картинка - background. Не понятно почему при этом QComboBox {color: x} меняет цвет стрелки.

там QListView
Не суть важно, писал по памяти, QListWidget тоже на базе QListView...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Апрель 20, 2010, 19:12 »

>>хоть текст
тут меня большие сомнения берут, что установка фона для текста, что-то визуально поменяет.
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Апрель 20, 2010, 19:42 »

Не понятно почему при этом QComboBox {color: x} меняет цвет стрелки.

Я говорил именно про это
Записан
SABROG
Гость
« Ответ #14 : Апрель 20, 2010, 20:10 »

Не понятно почему при этом QComboBox {color: x} меняет цвет стрелки.

Я говорил именно про это

Вопрос звучал так:
Цитировать
Вопрос - почему QLineEdit в итоге стилизуется cyan-ом а не magent-ой?

Я говорю о том, что в этом случае вообще нет никакого смысла использовать свойство color для QComboBox, так как у него само нет текста, значит надо стилизовать QLineEdit. Поэтому ответом на твой вопрос будет нечто вроде "просто вы не умеете его готовить". А вот то, что меняется цвет стрелки и текста в QLineEdit на изменение color для QComboBox и не меняется для QComboBox::down-arrow - ИМХО баг. По нормальному, изменение свойства color для QComboBox вообще ничего не должно менять, а у QComboBox должен появится дополнительный sub-control типа QComboBox::line-edit свойства которого и надо было бы менять.
« Последнее редактирование: Апрель 20, 2010, 20:12 от SABROG » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.13 секунд. Запросов: 22.