Полупрозрачни тупбарове и прозорци
-
За тоя номер да се вижда десктопа мисля, че има начин. Взима се "скрийншот" на десктоп-а и после си преимплементираш на QTextEdit прерисуването за да нарисуваш за бекграуд частта от десктопа, която би трябвало да се вижда. При всяко местене на прозореца, трябва да прерисуваш и ще е тежко. А и никога не може да си сигурен, че потребителя не си е сложил картинка с цвят, близък до цвета на текста.
За цвета: Разгледай класа "QPalette":http://qt-project.org/doc/qt-4.8/qpalette.html . С "QApplication::palette ()":http://qt-project.org/doc/qt-4.8/qapplication.html#palette можеш да вземеш текущата палитра, с която се рисуват уиджетите и да подадеш на тулбара цвета, който искаш с " QWidget::setBackgroundRole":http://qt-project.org/doc/qt-4.8/qwidget.html#setBackgroundRole . Цвета може също да се сложи и с CSS - "QWidget::setStyle":http://qt-project.org/doc/qt-4.8/qwidget.html#setStyle
-
Ти изглежда не ме разбра. Искам да взема цвета на заглавната лента на прозореца - там където се изписва името на прозореца (със setWindowTitle), а не цвета на самия прозорец.
В QPalette има всичко друго, но не и този цвят.
Това което мога да направя в момента (много тъпо) е да дам възможност на потребителя да зададе цвета на тулбара, а той с помощта на програма като GIMP да вземе с пипетката цвета на заглавната лента на някой прозорец и да си го сложи. Ама аз искам това да става автоматично, иначе се губи смисъла.
-
Това ще е сложно... Рамката на прозореца ( поне в Линукс е отделна програма ( мениджър на прозорци - KWin, Metacity и т.н ) ) така, че тя има отделни настройки, до които не мисля, че твоята програма има директен достъп. Може би ще можеш да вземеш цветовете от някаква библиотека, предоставена от мениджъра. Проблема е, че ще трябва да имплементираш такава възможност за всеки мениджър, който може да работи в момента. Друг проблем, че в Линукс мениджъра може да се подменя динамично по време на работа. Така, че може твоята програма да е пусната и да работи KWin, но някой после да го смени на Beryl. Поне за сега не се сещам за някакво лесно решение. Ако ми хрумне нещо ще пиша :)
-
Емиии...
Зарежи.Между другото, Скайпа си има собствена рамка поне под Windows. Това как се прави? Знам че Скайпа е написан на Qt.
Ама тоя въпрос само между другото - нямам намерение да правя такива неща, така че да не вземеш да се ровиш сега да търсиш как става... -
Във Windows е малко по-различно. Там приложението има някъв начин да си русива само рамката или да остави Windows-а да си нарисува тази по подразбиране. Това обаче става с библиотеките на Уина. Qt не съм сигурен дали предоставя тази опция, защото не е мултиплатформена.
Има начин да кажеш на прозореца, че не искаш рамка. И да си направиш нещо като рамка сам. ( Това го прави Хрома-а, примерно, под Линукс )
-
Това последното май е начина - да си я нарисуваш сам.
Напоследък се наблюдава една тенденция програмите да си имат собствени рамки. Скайп, Хром, Мозилата, Фотошоп, Илюстратор, Индизайн...
!http://i1-win.softpedia-static.com/screenshots/Adobe-InDesign_1.png(Indesign)!
... дори Майкрософт започнаха здраво да използват рамката за нестандартни неща като сложиха в нея бутони, менютa, табове на тулбарове и какво ли не (май-май почти всички продукти на MS са вече със собствени нестандартни рамки)...Според мен това има нещо общо с мобилните устройства с малки екрани - за да се пести място. Изглежда почнаха да се усещат че заглавната лента е една голяма неизползваема земя и почнаха да я орат и нея.
Така че тази тема един ден може да стане доста актуална. Затова ако някой случайно попадне на Qt програмка рисуваща собствена рамка да свирне.
Като се замисля това би решило моя проблем, защото може да се нарисува рамката, под нея да е тулбара, който да е в същия цвят и да преливат, после да се зададе полупрозрачност и да стане много яко (като в КДЕ). Само дето не знам как може да се направи всички останали компоненти да не наследяват тази прозрачност, а да са си нормални.
Друга тенденция е премахването на стандартното меню. Лично мен това много ми допада. Първо самото меню заема много място, второ почти всяко приложение вече има тулбарове и става едно излишно препокриване с менюто. Трето то наистина е неизползваемо в мобилните устройства и налага разлики в интерфейса на един и същи софтуер, пускан на различни машини. Идеята на така нареченото "ribbon menu" ми харесва много - всичко което може да прави програмата се поставя в тулбарове.
-
Мдаа... Всички искат да си рисуват собствени рамки ... На мен не ми допада много, защото става неконсистентно. Всяка програма има различни бутони за затваряне, различен цвят и какво ли още не. Премахването на рамката на KWin (примерно), ме лишава като потребител от всичко, което KWin предлага ( нагласяване на прозрачност, групиране на прозорците, местене за неактивните частни на прозореца и т.н) Примерно аз съм си нагласил при натискане на среден бутон върху рамката, прозореца да се затваря. Това няма как да стане, ако програмата си има своя рамка. Така аз ще имам много приложения, работещи по един начин и едно, което си работи по свой, а това нарушава "user experience"-а .
Иначе има ribbon реализация на Qt. Виж: http://qt-project.org/forums/viewthread/4214
-
За това си напълно прав - че всяка програма си прави каквото си ще и се губят общите действия на рамките. Но това е проблем за Линукс където се дава голяма свобода на потребителя.
На Windows няма такива работи - няма среден бутон да прави каквото му кажеш, няма прилепване на прозорците... абе нищо няма. А и да има начини и настройки, повечето потребители не ги ползват и няма да видят никаква разлика освен във външния вид.Но каквото и да си говорим - тенденцията е такава и трябва да се свиква с нея. Щом свикнах с левите бутони и таскбар на Убунту и сега постоянно търся нещата у лево... със всичко се свиква :)
-