Название: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 06, 2008, 10:29 В MS VS, когда жмем ctrl+tab появляется очень удобная панель с выбором куда мы хотим переместится.
У меня собственно стала проблема с тем, каким образом реализовать аналогичное поведение. А именно, панель появлятеся при нажатии ctrl+tab и до того момента пока мы не отпустим ctrl - она не исчезнет. Как этой можно реализовать в Qt ? Интересует сам механизм того как отобразить ctrl+tab и держать панель именно до момента отпускания ctrl. Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: EhTemka от Июль 07, 2008, 16:19 Можно как нить так попробовать:
Сначала в главном окне(или гле там у тебя табы) отслеживаешь QApplication::keyboardModifiers(), если есть кнтрл + таб Код: void MainWindow::keyPressEvent(QKeyEvent*event) А потом уже в свитчере отслеживаешь QApplication::keyboardModifiers(), на отжатие кнтрл Код: void TabSwitcher::keyPressEvent(QKeyEvent*event) как то так наверно можно... Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 08, 2008, 09:32 Спасибо за идею, приду домой опробую. Но кажется все действительно должно нормально работать, логика верная.
Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 15, 2008, 18:03 Теперь я вот дошел до проблемы, как мне реализовать эти "типа кнопки", которые там находятся.
Прикладываю скриншот в аттач VS - где показано чего я хочу добится. Для реализации задачи, я думаю использовать QGridLayout. У меня будут по крайне мере 2 столбца - Active Tool Windows и Active Files, причем если файлов много - то будут появляется и 3 и 4-ые столбцы, только уже без этого label. И думаю сделать специальный виджет у которого переопределить операцию рисования, чтобы его подсвечивать - типа активный. Так же нужно как-то сделать будет переход по нажатию стрелок, влево, вправо, вниз, вверх. Думаю нужно переопределять keyPressEvent и там на нужный обьект переустанавливать фокус. Хочу собственно узнать - может кто знает вариант лучше, который я не вижу ? Или как вы думаете какой лучше класс взять за основы для этих "типа кнопок", Button или Label ? Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: EhTemka от Июль 15, 2008, 18:44 Почему бы не попробовать QListView или QListWidget? И кнопок ни каких не надо...
Цитировать И думаю сделать специальный виджет у которого переопределить операцию рисования И тут делегат может помочь... Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 15, 2008, 20:26 Цитировать Почему бы не попробовать QListView или QListWidget? А можно ли его сделать так, чтобы его не были видно ?То есть добится чтобы никто с виду не понял что это list view, как на скрине - там же ведь даже если он и есть, то его не видно, даже намека. У меня терзают смутные сомнения, что я столкнусь с множеством проблем отрисовки, причем уже не самой кнопки - а виджета вообще. Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: EhTemka от Июль 15, 2008, 21:17 Цитировать А можно ли его сделать так, чтобы его не были видно ? То есть добится чтобы никто с виду не понял что это list view, как на скрине - там же ведь даже если он и есть, то его не видно, даже намека. да конечно Код: QListView listView; палитру можно как хошь настроить.. Цитировать У меня терзают смутные сомнения, что я столкнусь с множеством проблем отрисовки, причем уже не самой кнопки - а виджета вообще. Это да, если не будешь QListView или QListWidget использовать :) Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 15, 2008, 22:47 Попробую, с list, все равно никуда не спешу. Интересно, что получится.
Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 21, 2008, 10:57 Кстати, получилось ^_^. Не все сразу, с некоторыми проблемами, но мне их удалось решить.
Так во время реализации я понял, что у VS оно реализовано тоже с помощью списков. Понял это по поведению обьектов. EhTemka, спасибо. Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Пантер от Июль 21, 2008, 11:22 Ты хоть выложи решение где-нибудь, авось кому-нибудь понадобится. ;)
Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Alex03 от Июль 21, 2008, 11:48 Red Devil.
Надеюсь ты список переупорядочиваешь по факту переключения? А то попадаются порой проги (редакторы) в которых на каждое одиночное нажатие Ctrl+Tab (с отпусканием кнопок между ними) переключение идёт на новый элемент (окно) подряд по всем, в то время как у "нормальных" прог происходит возврат к предыдущему, т.е. список строится по "давности использования". :) Название: Re: Не могу понять как реализовать аналог Tab Switcher из VS Отправлено: Red Devil от Июль 21, 2008, 15:39 Решение по на стадии тестового проекта, т.е. в убогом виде я вот его сейчас буду додумывать, какую структуру данных использовать для модели. Так что как сделаю более менее цивилизованный/готовый для повторого использования вариант выложу.
Я конечно буду как у нормальных редакторов буду делать, с историей ^_^ |