Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: TukiNov от Июнь 03, 2009, 10:20



Название: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: 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 не получается. Может подскажите как можно реализовать их прозрачность ? а то приходится при навидении их показывать а потом убирать, но смотрится не очень
Как работает моно посмотреть на скринах:)


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: mugabe от Июнь 03, 2009, 10:25
По вопросу, увы, не подскажу.
Но очень интересно что используете для отображения карты? Она векторная? Свой компонент, или какой-то готовый?


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: TukiNov от Июнь 03, 2009, 10:39
Ага, векторная, формат MAP(SXF). mapinfo, жутко кривая :) много ограничений :) с Qt4 еле связал :) но нужна как воздух :) еще в проге сделано GeoTIFF с помощью gdal, и пытался сделать 3Д ландшафт по матрице высот через OpenGL + mapapi(получилось на 30%, на доделку времени нет).


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: Barmaglodd от Июнь 03, 2009, 10:47
А указать палитру для заголовка напрямую не пытались?
Код:
resultTreeWidget->horizontalHeader()->setAutoFillBackground(true);
resultTreeWidget->horizontalHeader()->setPalette(resultTreeWidget->palette());


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: TukiNov от Июнь 03, 2009, 10:54
У QTreeWidget нет horizontalHeader(), если делать так :
Код:
  resultTreeWidget->header()->setAutoFillBackground(true);
  resultTreeWidget->header()->setPalette(resultTreeWidget->palette());
то все равно прозрачности нет


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: mugabe от Июнь 03, 2009, 10:59
А setWindowOpacity(...) для основного виджета не подходит?


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: TukiNov от Июнь 03, 2009, 11:16
неа, не пашет. Это вообще лишнее, так как QWidget на QAbstractScrollArea по дефолту прозрачный(хотя я могу ошибаться, но у меня именно так) а вот виджеты на нем, полностью не прозрачны.


Название: Re: Прозрачность HeaderView и ScrollBar'ов в ... ну например в QTreeWidget
Отправлено: TukiNov от Июнь 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 все в силе :)