Russian Qt Forum
Ноябрь 24, 2024, 01:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget  (Прочитано 5321 раз)
TukiNov
Гость
« : Июнь 03, 2009, 10:20 »

Всем привет Улыбающийся Проблемка такая. Есть QWidget который лежит на QAbstractScrollArea, на этом виджите расположен QTreeWidget, прозрачность основного виджета и QTreeWidget задаю след образом:
Код:
//Для основного виджета
pal = palette();
pal.setBrush(backgroundRole(), QBrush(QColor(0, 0, 0, 80));
setAutoFillBackground(true);
setPalette(pal);

//Для QTreeWidget
pal = resultTreeWidget->palette();
pal.setBrush(resultTreeWidget->backgroundRole(), QBrush(QColor(0, 0, 0, 0)));
resultTreeWidget->setAutoFillBackground(true);
resultTreeWidget->setPalette(pal);
А вот задать прозрачность для заголовка и скролл баров QTreeWidget не получается. Может подскажите как можно реализовать их прозрачность ? а то приходится при навидении их показывать а потом убирать, но смотрится не очень
Как работает моно посмотреть на скринах:)
Записан
mugabe
Гость
« Ответ #1 : Июнь 03, 2009, 10:25 »

По вопросу, увы, не подскажу.
Но очень интересно что используете для отображения карты? Она векторная? Свой компонент, или какой-то готовый?
Записан
TukiNov
Гость
« Ответ #2 : Июнь 03, 2009, 10:39 »

Ага, векторная, формат MAP(SXF). mapinfo, жутко кривая Улыбающийся много ограничений Улыбающийся с Qt4 еле связал Улыбающийся но нужна как воздух Улыбающийся еще в проге сделано GeoTIFF с помощью gdal, и пытался сделать 3Д ландшафт по матрице высот через OpenGL + mapapi(получилось на 30%, на доделку времени нет).
Записан
Barmaglodd
Гость
« Ответ #3 : Июнь 03, 2009, 10:47 »

А указать палитру для заголовка напрямую не пытались?
Код:
resultTreeWidget->horizontalHeader()->setAutoFillBackground(true);
resultTreeWidget->horizontalHeader()->setPalette(resultTreeWidget->palette());
Записан
TukiNov
Гость
« Ответ #4 : Июнь 03, 2009, 10:54 »

У QTreeWidget нет horizontalHeader(), если делать так :
Код:
  resultTreeWidget->header()->setAutoFillBackground(true);
  resultTreeWidget->header()->setPalette(resultTreeWidget->palette());
то все равно прозрачности нет
Записан
mugabe
Гость
« Ответ #5 : Июнь 03, 2009, 10:59 »

А setWindowOpacity(...) для основного виджета не подходит?
Записан
TukiNov
Гость
« Ответ #6 : Июнь 03, 2009, 11:16 »

неа, не пашет. Это вообще лишнее, так как QWidget на QAbstractScrollArea по дефолту прозрачный(хотя я могу ошибаться, но у меня именно так) а вот виджеты на нем, полностью не прозрачны.
Записан
TukiNov
Гость
« Ответ #7 : Июнь 04, 2009, 15:13 »

С QScrollBar'ом разобрался, через CSS:
Код:
"QScrollBar:horizontal {"
  "   border: 1px solid rgba(0, 0, 0, 80);"
   "  background: rgba(0, 0, 0, 0);"
    " height: 15px;"
     "margin: 0px 40px 0 0px;"
 "}"
" QScrollBar::handle:horizontal {"
 "    background: rgba(0, 0, 0, 100);"
  "   min-width: 20px;"
 "}"
"QScrollBar::add-line:horizontal {"//вправо
 "    background: rgba(0, 0, 0, 100);"
  "   width: 16px;"
   "  subcontrol-position: right;"
    " subcontrol-origin: margin;"
     "border: 1px solid black;"
 "}"
" QScrollBar::sub-line:horizontal {"//влево
 "    background: rgba(0, 0, 0, 100);"
  "   width: 16px;"
   "  subcontrol-position: top right;"
    " subcontrol-origin: margin;"
     "border: 1px solid black;"
     "position: absolute;"
     "right: 20px;"
 "}"
 "QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal {"
  "   width: 3px;"
   "  height: 3px;"
    " background: none;"
 "}"
 "QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {"
  "   background: none;"
 "}";
про прозрачность QHeaderView все в силе Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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