Russian Qt Forum

Qt => Общие вопросы => Тема начата: Azazello от Декабрь 06, 2018, 17:32



Название: Табы как в броузере
Отправлено: Azazello от Декабрь 06, 2018, 17:32
У кого какие идеи реализации?
Одно и то же приложение, много копий запущено. Как бы так сделать, чтобы выглядели как одно. Полный аналог любого современного броузера, где каждый таб - отдельный броузер.


Название: Re: Табы как в броузере
Отправлено: Racheengel от Декабрь 07, 2018, 01:00
Ну, можно сделать несколько табов, в каждый таб добавить по броузеру, а потом эти табы соединить в одно.  То есть new QTab, в него добавить QWebBrowser, а потом в QTabWidget добавить эти QTab. И весь этот QTabWidget добавить в приложение. Одно приложение и получится, с табами, а в каждом табе будет по броузеру.


Название: Re: Табы как в броузере
Отправлено: Azazello от Декабрь 07, 2018, 14:36
Ну, можно сделать несколько табов, в каждый таб добавить по броузеру, а потом эти табы соединить в одно.  То есть new QTab, в него добавить QWebBrowser, а потом в QTabWidget добавить эти QTab. И весь этот QTabWidget добавить в приложение. Одно приложение и получится, с табами, а в каждом табе будет по броузеру.

Та нет. Вы меня не правильно поняли. Но судя по всему - это моя вина. Программа ничего общего с броузером не имеет.
Представте, что вам нужно запустить десятки копий одной и той же программы. Либо она засрет весь таск бар (что раньше броузеры и делали), либо сделать как в броузере - новая копия программы - новый таб.


Название: Re: Табы как в броузере
Отправлено: Racheengel от Декабрь 12, 2018, 15:48
Аа, имеется в виду Multi Instance Application (MIA)?
Это чисто системно-зависимая штука тогда, необходимо каждой инстанции знать все процессы своих "копий" и уметь между ними переключаться.

Посмотрите класс CPlatformServices, а именно CPlatformServices::GetRunningPIDs() и CPlatformServices::SetActiveWindow тут:
https://github.com/ArsMasiuk/qvge/blob/master/src/appbase/CPlatformServices.cpp

И еще там же класс CMainWindow::updateInstance() и далее по коду instance management.
Там строится меню, через которое можно активировать другие инстанции приложения.
Аналогично, думаю, можно на табы перестроить.


Название: Re: Табы как в броузере
Отправлено: Day от Декабрь 16, 2018, 23:50
Простите ради Бога, но мне эта тема навеяла вопрос, о котором думаю уже давно, и даже не знаю, с какой стороны подступиться. Возможно, он лежит далеко от темы, а возможно и не очень. Наверное, он не имеет вообще отношения к Qt, а только к WinAPI.
Есть Windows-программа (да еще на OWL, не к ночи будь помянута). Она - MDI. И вот на Qt я могу создать очень красивый отчет. И если бы вставить в MDI-окно этот отчетик, то счастью моему не было бы предела. От него многого не надо. ReadOnly. но чтобы вел себя как обычное MDI-окно. Под управлением W-приложения. Из которого я вызываю Q-приложение. И умею между ними посылать сообщения.
Реальна ли вообще реализация моих чаяний? Стоит ли на этом форуме создавать новую тему по этому поводу? Или же все-таки эта тема лежит в ведении WinAPI, и не фига форум засорять?
... Эта тема меня еще навела на мыслю, что MDI и QTabWidget очень похожи. То есть выполняют аналогичные функции, но каждая со своими мелкими заморочками...
Увы! Советы заменить-переписать мою главную W-программу мне помочь не смогут. Она слишком древняя и чрезвычайно запутанная. И у нее есть некоторое количество консервативных пользователей. Моя идея в том, чтобы потихоньку заменять ее функции, построенными на правильных фреймворках, к которым я в первую очередь отношу Qt. Пока от нее не останется только вызов нужных Qt-приложений. Не знаю, успею ли, но вот есть чем заняться...


Название: Re: Табы как в броузере
Отправлено: Igors от Декабрь 17, 2018, 07:09
Реальна ли вообще реализация моих чаяний? Стоит ли на этом форуме создавать новую тему по этому поводу? Или же все-таки эта тема лежит в ведении WinAPI, и не фига форум засорять?
Цитировать
- я что, испортил праздник?
- по правде говоря, дружище, ты сделал его даже лучше
:) Насколько я понял, Вам нужно не Qt-приложение, а Qt dll которая занимается одним окном и вызывается из другого (не Qt) приложения. Это было, и не раз, но так давно что никаких подрбностей - увы, навскидку не вспомню.

Увы! Советы заменить-переписать мою главную W-программу мне помочь не смогут. Она слишком древняя и чрезвычайно запутанная. И у нее есть некоторое количество консервативных пользователей. Моя идея в том, чтобы потихоньку заменять ее функции, построенными на правильных фреймворках, к которым я в первую очередь отношу Qt. Пока от нее не останется только вызов нужных Qt-приложений. Не знаю, успею ли, но вот есть чем заняться...
Лет 10 назад у меня была такая же задача - портинг на Qt. Причем "W-приложение" было с лимон строк, и не так себе "считая подключенные либы", а самопальных. И тоже я начал с использования Qt как плагина для одного из редакторов. Ну заработало, но очень быстро я устал от множества "костылей" - связок между Qt и "не Qt" кодом. Стало очевидным что такое "по частям" совершенно бесперспективно.

Не хочу растекаться на неск страниц о подробностях портинга, да и "узурпировать" чужую тему нехорошо :) В 2 словах - да, переписывать главное приложение придется, вопрос как это делать. Создадите тему - поддержу обсуждение.



Название: Re: Табы как в броузере
Отправлено: Day от Декабрь 17, 2018, 11:31
Igors, Насколько понял я, ваш опыт для меня бесценен.
Тему создам обязательно, только с мыслями соберусь...