Титла: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: LinuxFanUNIX в Aug 20, 2010, 19:03 Здравейте приятели!
Един приятел ме помоли да му инсталирам програма за дефрагментиране на дялове, и "гепнах" една за ушичките от родните тракери, инсталирах я, и като показа че има 30 дни активен период, трябваше да се копира един файл, който да замени стария... Както и да е... С учудване видях че тази програма използва Qt4 библиотеките. Та ми е интересно как в моята програма мога да си направя ето такава (или подобна) окантовка на прозореца, а не да ползвам тази която идва от графичната среда: (http://i235.photobucket.com/albums/ee276/zeetbear343/OODefragProfessional10016342.jpg) Т.е. как да махна рамката горе (където са минимизиране, максимизиране, X (затваряне)) и да използвам собствена? Благодаря предварително! Титла: Re: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: task_struct в Aug 20, 2010, 20:08 В Windows ( от това, което четох в блога на Мартин ( KWin ) ) програмата сама се грижи за изрисуването на рамката си, като има някакъв вид дефаултно рисуване, което си е стандартния изглед на прозореца. В Линукс обаче има мениджър на прозорците ( KWin, Metacity, Beryl, Compiz, ... ). Той се грижи за рамките на програмите. Един вид обвивка им се явява. Също така той се грижи и като натиснеш хикса и програмата не се затвори за определен период от време, да те пита искаш ли принудително да я затовори. От Каноникъл искат Гном да мине на принципа, използван в Windows, но срещнаха доста голяма съпротива, защото това би разрушуло единният вид на рамките ( GTK приложенията ще имат една рамка, Qt друга, а статично линкнатите приложения като Скайпа съвсем различна. )
Има въжможност чрез флаг в QMainWindow или QWidget да кажеш на мениджъра на прозорци да не изрисува своята рамка и ти да си имплементираш някакъв widget, който да имитира рамка, но той влиза в площа на основнит прозорец, а не от страни където би била рамката на мениджъра. Също така ще загубиш и от фукционалността на прозорците - примерно няма да има сенки, ако ти забие прозореца няма да те пита искаш ли да го затвори и също така твоята рамка няма да се изрисува заедно със забилият прозорец. За съжаление не мога да ти кажа как става точно. Google Chrome примерно използва тази техника, така че се поддържа от X-са и Qt/GTK приложенията могат да я изискват. Намерих го :) http://doc.trolltech.com/4.7-snapshot/qt.html#WindowType-enum Цитат Qt::FramelessWindowHint 0x00000800 Produces a borderless window. Титла: Re: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: LinuxFanUNIX в Aug 20, 2010, 20:35 Благодаря за информацията! Току-що пробвах - на Windows се получава, само дето не мога да мърдам прозореца (и на идея си нямам как ще стане номера). ;D А на другата програма - прозореца се мести. Защо се получава така? По-точно се досещам че това е като да търкалям отделен бутон по екрана, но и на идея си нямам как се фиксира - ако можеш да помогнеш - ще бъда супер благодарен. ;)
Още веднъж - Благодаря за бързият отговор, отново! [_]3 Титла: Re: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: task_struct в Aug 20, 2010, 20:46 На Windows никога не съм програмирал, освен Hello, World в cmd :D Не мога да ти кажа за него. В Линукс няма да имаш проблем с местенето(току що го пробвах), всички по-известни приложения поддържат NETWM подсказки :)
Титла: Re: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: LinuxFanUNIX в Aug 20, 2010, 20:57 На Windows никога не съм програмирал, освен Hello, World в cmd :D Не мога да ти кажа за него. В Линукс няма да имаш проблем с местенето(току що го пробвах), всички по-известни приложения поддържат NETWM подсказки :)Добре! Тъй като нямам търпение да се прибера на домашното компютърче, можеш ли да ми кажеш има ли значение по кое място ще хванеш прозореца за да се мести? Всмисъл ако се хване през средата между два бутона да речем? Благодаря за бързите отговори! Титла: Re: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: task_struct в Aug 20, 2010, 21:08 В по-старият KWin мисля, че ще трябва да натиснеш Алт и после където и да настиснеш с мишката ще се мести. При мен KWin/Oxygen си има опция, която засича не интерактивните части от прозореца и може от там да го местиш.
Титла: Re: Промяна на прозоречна окантовка (рамка) на програма писана на Qt4 Публикувано от: LinuxFanUNIX в Aug 20, 2010, 21:13 Благодаря ти много за помощта! ;) Пък Уиндоуската версия на програмата (ако има такава) - ще си ползва шарените им бутончета! Благодаря още веднъж! Лека и приятна вечер!
|