crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Css для QTableView
Andrewshkovskii
  опции профиля:
сообщение 15.10.2010, 11:26
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Можно ли изменить border для подсветки выделения в tableView?
Допустим, в конкретном примере мне надо у этого выделения изменить border-radius как у виджета TableView, что бы оно так не выпирало за видимые границы, и сделать его бесцветным (это я так понимаю через selection-background-color , но как там поставить бесцветное выделение ? ) , т.е оставить только окантовку, что бы было понятно, что строка выбрана.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 15.10.2010, 11:40
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Andrewshkovskii)
но как там поставить бесцветное выделение ?

transparent устанавливает прозрачный фон.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 15.10.2010, 11:47
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


По логике-то оно так, а вот на деле далеко не так, вот такой у меня стоит стиль на весь QTableWidget (его взял для примера в дизайнере, ибо во вьюху просто айтемы не забьешь )
:
QTableWidget{
border: 0.5px solid gray;
border-radius : 25px;
selection-background-color : transparent black;
}

QTableView::item{
border : 0px;
padding-left : 5px;
}

Но ничего не происходит в изменении выделения.
Тем более, если я не закомментирую стиль для item'ма, то при хайлайте я просто ничего не увижу, т.е в палитре HighlightedText становиться в белый...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 15.10.2010, 12:03
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Тогда не знаю как через css. Я бы навесил на таблицу делегат который не рисовал бы это выделение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 15.10.2010, 12:16
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Как-то печально, что нельзя через цсс, а что делать с границами вьюхи?
Просто, получается , что у виджета я делаю радиус на границах, а сама вьюха выезжает за границы виджета, и получается коряво, а QTableView { border-radius : ..} не помогает..

Вот я выделил, что не изменяет радиус при таком css :
QTableView{
border : 0.5px solid gray;
border-radius : 25px;
}
QHeaderView::section:first {
     background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
                                       stop:0 #616161, stop: 0.5 #505050,
                                       stop: 0.6 #434343, stop:1 #656565);
     color: white;
     border: 1px solid #6c6c6c;
[b]     border-radius : 25px;[/b]/*не работает*/
     padding-left: 4px;
     margin-left  : 25px;
}


Сообщение отредактировал Andrewshkovskii - 15.10.2010, 13:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 16.10.2010, 2:09
Сообщение #6


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Andrewshkovskii @ 15.10.2010, 13:16) *
осто, получается , что у виджета я делаю радиус на границах, а сама вьюха выезжает за границы виджета
Andrewshkovskii, попробуй такой вариант.

QTableView{
border: 1px solid #6c6c6c;
border-radius: 20px;
background-color:transparent;
gridline-color: gray;
}

QTableView QHeaderView{
  border-top-right-radius: 20px;
  border-bottom-left-radius: 20px;
  background-color:transparent;
}

QTableCornerButton::section{
border-top-left-radius: 20px;
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 18.10.2010, 1:03
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Спасибо за наводку, Игорь, но половина цсски получилась не нужной, вот что оставил и что получилось :
QTableView{
border: 1px solid #6c6c6c;
border-radius: 20px;
background-color:transparent;
}

QHeaderView{
border : 1px solid black;
border-radius : 9px;
  background-color:transparent;
  margin-left : 5;
  margin-right : 5;
  margin-top : 4;
}


На рисунке видно, что бордер то для хидера поменялся, но вот сами элементы налазят на границу, т.е. как-то они не относятся к цссу QHeaderView, через QHeaderView::item не смог достучаться, так как тогда получить к ним доступ ?

А, я кажется понял, доступ к самим элементам хидера через ::section ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 19.10.2010, 11:11
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Так...Ну я забил возиться с бордером таблицы, ибо там ещё придется изменять положения скроллов, сдвигать хидер вниз, просто убрал границу. Теперь возникла потребность убрать выделение(фокус) на виджете (эта та dotted огранка вокруг выделенного элемента в таблице), в интернетах нашел такое решение :
QTableView{
border: none;
border-radius: 20px;
background-color:transparent;
gridline-color: gray;
selection-color : black;
selection-background-color :rgb(249, 249, 238);
}
QTableView::item:focus{
border: none;
background-color : transparent;
selection-color : black;
}

Но выделение все-равно остается, т.е задний фон ячейки окрашивается в прозрачный, и выделение видно все равно, а мне нужно что бы просто строка подсвечивалась без выделения. Если менять background-color на другой, отличный от прозначного цвет, то focus (огранка) опять появляется. Как быть?:)
++ Я так понимаю, что для ::item:focus , цвет заднего фона если стоит transparent, то он будет цвета заднего фона самого виджета.

Так добился что бы не менялся фон для выбранной ячейки, но появляется этот фокурс (огранта ввиде dotted border) :
QTableView{
border: none;
border-radius: 20px;
selection-color : black;
selection-background-color :rgb(249, 249, 238);
}
QTableView::item:focus{
border: none;
background-color :rgb(249, 249, 238);
selection-color : black;
}

Как от неё избавиться ?

Сообщение отредактировал Andrewshkovskii - 19.10.2010, 11:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_JaguaR_*
сообщение 16.2.2011, 16:31
Сообщение #9





Гости








    


Поставь:
* {outline: 0;}
Это для всех виджетов. Для конкретного то же свойство. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 3:56