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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QSplitter stylesheet on QWidget  (Прочитано 9542 раз)
daimon
Гость
« : Май 10, 2012, 04:02 »

Код:
QMainWindow::separator::vertical { 
background :qlineargradient(spread:pad, x1:0.993909, y1:0.455, x2:0, y2:0.511, stop:0 rgba(172, 172, 172, 255), stop:1 rgba(255, 255, 255, 255));
width: 5px; /* when vertical */
height: 5px; /* when horizontal */

border-radius: 2px;
}

QMainWindow::separator:hover::vertical {
background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(102, 102, 102, 255), stop:1 rgba(255, 255, 255, 255));
}
стилизуется сплиттер между доквиджетом и центральным виджетом
как застилизовать сплиттер для такого случая?
« Последнее редактирование: Май 17, 2012, 21:49 от daimon » Записан
daimon
Гость
« Ответ #1 : Май 10, 2012, 04:15 »

Код:
QSplitter::handle { 
background :qlineargradient(spread:pad, x1:0.993909, y1:0.455, x2:0, y2:0.511, stop:0 rgba(172, 172, 172, 255), stop:1 rgba(255, 255, 255, 255));
width: 5px; /* when vertical */
height: 5px; /* when horizontal */

border-radius: 2px;
}

QSplitter::handle:hover {
background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(102, 102, 102, 255), stop:1 rgba(255, 255, 255, 255));
}

в дизайнере наведение на сплиттер срабатывает и меняет цвет хендлера, а в предпросмотре и приложении нет. В чём проблема?

P.S. не работает свойство hover!!!
« Последнее редактирование: Май 10, 2012, 04:32 от daimon » Записан
Bepec
Гость
« Ответ #2 : Май 10, 2012, 07:33 »

QSplitterHandle
{
background-color: qlineargradient(spread:repeat, x1:0.3235, y1:0.545, x2:0.21, y2:0.545455, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255,255));
width: 5px;
height: 5px;
}
Записан
daimon
Гость
« Ответ #3 : Май 10, 2012, 11:47 »

QSplitterHandle
{
background-color: qlineargradient(spread:repeat, x1:0.3235, y1:0.545, x2:0.21, y2:0.545455, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255,255));
width: 5px;
height: 5px;
}

этот вариант работает для всех состояний сплиттера, а я ещё хочу прописать ещё состояние, когда получает управление сплиттер (hover) и менять тогда фон сплиттера - заливать его других градиентом) - навёл мышь и другой цвет
почему нет свойства hover или я его неправильно прописываю?
Записан
V1KT0P
Гость
« Ответ #4 : Май 10, 2012, 11:54 »

почему нет свойства hover или я его неправильно прописываю?
Посмотри в справке "Qt Style Sheets Reference", там ничего про поддержку hover в QSplitter нету.
Записан
daimon
Гость
« Ответ #5 : Май 10, 2012, 13:00 »

почему нет свойства hover или я его неправильно прописываю?
Посмотри в справке "Qt Style Sheets Reference", там ничего про поддержку hover в QSplitter нету.

а что тогда вот это может быть и ставить сплиттеру между доквиджетом и mdi областью

Код:
QMainWindow::separator::vertical { 
background :qlineargradient(spread:pad, x1:0.993909, y1:0.455, x2:0, y2:0.511, stop:0 rgba(172, 172, 172, 255), stop:1 rgba(255, 255, 255, 255));
width: 5px; /* when vertical */
height: 5px; /* when horizontal */

border-radius: 2px;
}

QMainWindow::separator:hover::vertical {
background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(102, 102, 102, 255), stop:1 rgba(255, 255, 255, 255));
}

и ещё самое странное, что стиль с hover применяется и показывается при редактировании в дизайнере, а при предпросмотре его уже нет
заметил, что такое видно в Qt4.8.0, в Qt 4.7.0 свойство не применяется вообще
« Последнее редактирование: Май 10, 2012, 13:31 от daimon » Записан
Bepec
Гость
« Ответ #6 : Май 10, 2012, 14:38 »

Интересная фигня. Действительно, разнится результат. Конечно мб это из-за библиотек какой то косяк.ммм..

Ответ найден - баг в Qt, ещё с 4.6 4.7

Обходится -
Код:
QSplitterHandle:hover {}  QSplitter::handle:horizontal:hover {background-color:red;}

Баг репорт : https://bugreports.qt-project.org/browse/QTBUG-13768?page=com.atlassian.streams.streams-jira-plugin%3Aactivity-stream-issue-tab

update: решение найдено за 5 минут. Хе хе хе.
« Последнее редактирование: Май 10, 2012, 14:44 от Bepec » Записан
daimon
Гость
« Ответ #7 : Май 10, 2012, 19:39 »

Код:
QSplitter::handle { 
background :qlineargradient(spread:pad, x1:0.993909, y1:0.455, x2:0, y2:0.511, stop:0 rgba(172, 172, 172, 255), stop:1 rgba(255, 255, 255, 255));
width: 5px;
height: 5px;

border-radius: 2px;
}
QSplitterHandle::hover{}
QSplitter::handle:horizontal:hover {background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(102, 102, 102, 255), stop:1 rgba(255, 255, 255, 255));}

вот этот код смущает
Код:
QSplitterHandle::hover{}

но всё работает как надо, спс
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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