LINUX.ORG.RU

HeaderBar в QT.

 , , ,


0

1

Вот в GTK есть такой виджет, как Gtk.HeaderBar(). Он позволяет встраивать другие виджеты в верхнюю часть рамки окна. А есть ли что-то подобное в QT?


Ответ на: комментарий от CYB3R

Да просто у меня душа плачет, когда я вижу кучу QT прог, которые выделяют толстую панель с теми же целями, для которых создан Gtk.HeaderBar()

Ancient
() автор топика

А есть ли что-то подобное в QT?

В Qt подобного нет.

CrossFire ★★★★★
()
Ответ на: комментарий от Ancient

Как ни странно, согласен

А где они еще поддерживаются кроме Gnome и Gtk? Кто-то просто напилил велосипедов и рад.

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)

Gtk лучше интегрируется с типичными Linux DE, Qt ориентировать на средний кроссплатформенный UI. И если говорить о Mac OS X, то скорее всего там такой виджет не приветствуется, сли в него помещать что-то другое, не меню. У них вроде только меню и только в global bar всего экрана.

vertexua ★★★★★
()
Ответ на: комментарий от Ancient

Гугл даёт что-то под названием DWD (Dynamic Window Decorations). Но лучше всё-таки использовать GTK+.

CYB3R ★★★★★
()
Ответ на: комментарий от mystery

«А верхнюю панель в GNOME запихали в кнопку, где списком» Это тоже можно поправить. Достаточно дополнение приписать. Хотя мне и так нравится.

Ancient
() автор топика
Ответ на: комментарий от Ancient

В смысле поправить? Сверхну, на панели статуса, где часы, уведомления, активитис есть кнопка с иконкой приложения
После тыка на кнопку есть пункты - поиск, шорткаты, завершить и всякое другое, что раньше было в под заголовком в окне или на макосе на верхней панели

mystery ★★
()
Ответ на: комментарий от mystery

«под заголовком в окне» и «меню приложения» - разные вещи. Это убунта перетягивает «под заголовком в окне» на верхнюю панель. А гном - нет.

Ancient
() автор топика

Нет, такой функциональности в Qt нет.

А было бы неплохо иметь QGtkExtension с этим. Ведь есть же такие расширения по OS X, MS Windows, Android и iOS.

Вообще в идеальном мире Qt должен был зависить от GTK+ и рисовать его контролами, как он это делает в OS X (зависит от Cocoa) и Windows (рисует через WinAPI). Но вместо использования стандартной для GNU/Linux библиотеки виджетов GTK+, они используют собственную костыльную отрисовку, а мы мудохаемся с мимикрией и темами. Увы.

EXL ★★★★★
()
Ответ на: комментарий от Ancient

С каких это пор QT - QuickTime?

С давних. А то, о чём ты спрашиваешь - Qt

Valkeru ★★★★
()
Ответ на: комментарий от Ancient

Еще раз говорю, Статус бар, на нем кнопка с названием приложения, по нажатию на которую открывается список, который имитирует верхнюю панель под заголовком а-ля вин95, только списком

mystery ★★
()
Ответ на: комментарий от EXL

Вообще, пишут, что Qt под Windows и OS X тоже в действительности не использует нативные контролы, а отрисовывает их сам, умело мимикрируя.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от EXL

Вообще в идеальном мире Qt должен был зависить от GTK+ и рисовать его контролами

Идеальный мир это ui тулкит на heavyweight компонентах? А что делать если в разных ОС наборы нативных компонент не совпадают?

Midael ★★★★★
()
Ответ на: комментарий от EXL

они используют собственную костыльную отрисовку, а мы мудохаемся с мимикрией и темами. Увы.

++

kravich ★★★★
()
Ответ на: комментарий от Ancient

QT - это и есть QuickTime, а то, про что ты пишешь, называется Qt (вторая буква строчная).

hobbit ★★★★★
()

Он позволяет встраивать другие виджеты в верхнюю часть рамки окна.

Голову бы отломать тому, кто это придумал. Половину программ из гнома3 теперь использовать нельзя в других вм.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от EXL

Зато, в отличии от GTK, Qt может работать без иксов (что крайней полезно для Embedded )

RiseOfDeath ★★★★
()
Ответ на: комментарий от Deleted

По твоей ссылке же сказано, что некоторые темы используют нативные API:

It's worth mentioning though that Qt comes with special styles for Mac OS X and Windows XP and Vista that use native APIs (Appearance Manager on Mac OS X, UxTheme on Windows XP) for drawing standard widget primitives (e.g. scrollbars or buttons) exactly like any native application.

Именно поэтому на том же GNU/Linux нельзя использовать темы Mac OS X, Windows XP или Windows Vista.

EXL ★★★★★
()
Ответ на: комментарий от EXL

И Qt и GTK+ в Windows, мимикрируя под нативные темы, делают это одним и тем же образом - через вызовы DrawThemeBackground. У кого-то это получается хуже (GTK, Swing), у кого-то лучше. Нативные контролы кроме самого окна при этом не создаются.

Есть у нас тулкит, который «рисует контролами» без «собственной костыльной отрисовки» - wxWidgets. На мой взгляд какого-то преимущества и удобства это не дает. Проблем, если UI становится сложным, - вагон и тележку. Часто приходится по локоть залезать в нутро библиотеки (благо код написан просто и понятно) и ловить специфичные для каждой системы баги, подпирать это все платформозависимым кодом и private-частью библиотечного API. Причем часть виджетов все равно рисуется средствами библиотеки (wxDataViewCtrl, wxGrid и т.п.). В итоге может так получиться, что приложение будет выглядеть «менее нативно», чем аналогичное на Qt, который мимикрирует. Нет серебряной пули.

Amp ★★★
()
Ответ на: комментарий от Amp

Я обычно пишу на чистом Gtk3. Так что у меня всё просто и понятно.

Ancient
() автор топика
Ответ на: комментарий от Im_not_a_robot

«Половину программ из гнома3 теперь использовать нельзя в других вм.»

Ну, не скажу. Всё больше и больше ВМ поддерживают эту функцию. Уже работает на Pantheon, Cinnamon, Budgie, XFCE, GNOME3. Знаю не по наслышке - на всех запускал такие проги и на всех нормально работало.

Ancient
() автор топика
Ответ на: комментарий от x905

Не квадрат, а Gtk.Box(). Просто окно в Gtk позволяет использовать в качестве заголовка окна любой виджет, а не то, что предоставляет декоратор.

Ancient
() автор топика
Ответ на: комментарий от x905

В GTK это крайне просто. Вот пример:

		this.title = ClassMain.name; //
		this.icon = ClassMain.logo; //
		this.window_position = WindowPosition.CENTER; //
		this.destroy.connect(Gtk.main_quit); //
		set_default_size(sizex, sizey); //Configure window
		
		var topbar = new Gtk.HeaderBar(); //
		topbar.set_title(ClassMain.name + " (Git Manager)"); //
		topbar.set_subtitle(ClassMain.version); //
		topbar.show_close_button = true; //
		this.set_titlebar(topbar); //Configure header bar

Ancient
() автор топика
Ответ на: комментарий от Ancient

Хедербар работает как обычный Gtk.Box()

Ancient
() автор топика
Ответ на: комментарий от Ancient

1. Это красиво

Это уродливо и ломает общий стиль.

2. Это удобно

Это неудобно, т.к. опять же нет единого стиля и поведения.

Интерфейс занимает меньше места

Жирный гномо-интерфейс занимает меньше места, ага. Меньше места занимают программы, где можно настроить внешний вид и/или убрать тулбар. Меньше занимают места программы в DE, где все меню переносятся на панель или в заголовок, а не как в Gnome - что-то сверху, а что-то маячит в окне. Где развернутое окно прячет свой заголовок, а не как в Gnome Shell бесполезно оставляет на экране.

anonymous
()
Ответ на: комментарий от EXL

А оно разве не делает тоже самое? Просто там gtk2 только.

Кстати, в дремучие времена запилил аналог HeaderBar под Qt на windows, думаю аналогично можно для Мака сделать и для waylandа.

Gorthauer ★★★★★
()
Ответ на: комментарий от Ancient

ананимус тебе ответил, для пример kcalc и gnome-calculator

1. зачем у gnome-calculator сделан выбор режима в заголовке ? это для удобства или просто для демонстрации, что так можно ?

2. теперь заголовок окна не имеет названия gnome-calculator - это неудобно и некрасиво

3. размеры калькуляторов сам можешь сравнить

x905 ★★★★★
()
Ответ на: комментарий от x905

зачем у gnome-calculator сделан выбор режима в заголовке ?

Посмотрел, реально в заголовке, я в ах%е. Где-то недоменю в панели, где-то полноценное меню в заголовке, а теперь вот и отдельное недоменю в заголовке. Что у этих людей в голове?!

anonymous
()
28 февраля 2016 г.
Ответ на: комментарий от anonymous

1. Это не уродливо и не ломает общий стиль. Просто ты не умеешь использовать хедербары или юзаешь софт, который их использует не по назначению. 2. Общий стиль имеется. Просто надо зараннее знать, что в хедербары выносить. 3. Эта проблема наблюдается только в адвайте. В других темах всё нормально. А на крупных разрешениях она вообще не заметна и даже превращается в фичу. Я, например, юзаю тему Arc. И там, где нет хедербаров, она ставит самые обычные декорации, как в GTK2. Так что говори за себя.

Ancient
() автор топика
Ответ на: комментарий от anonymous

+, gtk3 использует некоторые фичи гном шелла, который почему-то все недолюбливают и не понимают, что есть дополнения для него.

Ancient
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.