Russian Qt Forum
Ноябрь 27, 2024, 05:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: выплывающий виджет  (Прочитано 4087 раз)
romanick
Гость
« : Май 21, 2010, 16:14 »

Привет.
Есть виджет с кнопкой, при нажатии на которую должен появляться другой виджет. Но не просто появляться, а выплывать из под нижнего края первого виджета. Т.е. второй виджет должен быть ПОД первым. К тому же по-ширине второй должен быть уже первого.
В каком направлении копать? Не хочется тупо менять положение виджета в цикле, т.к. на машинах с разной производительностью это будет работать по разному.
Буду безмерно благодарен за любой работающий пример.
Записан
Sanya
Гость
« Ответ #1 : Май 21, 2010, 18:18 »

Доброго времени суток.
Я сделал по таймеру(в QObject есть встроенный таймер). Точнее, просто сделал класс которому передается ссылка на объект типа QWidget и он по своему таймеру изменяет либо его размер либо maximumSize. Отсчет милисекунды(еденицы таймера) будет на всех машинах одинаков - за этим процессор следит. Или я не прав?
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #2 : Май 21, 2010, 18:27 »

romanick, точно незнаю, но попробуй покапать Qt State Machine.
В Qt Quick это можно сделать легко вроде.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Amigo_sa
Гость
« Ответ #3 : Май 21, 2010, 18:29 »

Добрый день. Ваша задача легко решается с помощью Animation Framework. В этой теме я разбирался с ее производительностью. Там же есть примеры реализации. Если контент не сложный, то все работает быстро.
Записан
romanick
Гость
« Ответ #4 : Май 25, 2010, 09:03 »

Добрый день. Ваша задача легко решается с помощью Animation Framework. В этой теме я разбирался с ее производительностью. Там же есть примеры реализации. Если контент не сложный, то все работает быстро.
Да, разобрался, - всё действительно очень легко. Даже проще чем я предполагал. Спасибо!
Записан
romanick
Гость
« Ответ #5 : Июль 01, 2010, 10:48 »

Возвращаюсь к этой теме опять.
Не могу подобрать нужную комбинацию флагов (setWindowFlags) для этих двух виджетов.
Надо выполнить сдедующие условия:
1. Для обоих виджетов не должно быть кнопки в панели задач.
2. второй (выплывающий) виджет всегда должен быть под первым
3. после того как второй виджет появился, на него переходит фокус, но фокус может быть возвращён в первый виджет без закрытия второго (т.е модальность не походит).
Первый виджет содержит в себе указатель на второй. Первый виджет вызывается в не модальном режиме.

Таким образом, два виджета должны вести себя как одно целое. Может кто-то делал подобную задачу?
Или может быть подскажите как можно сделать по-другому?
Должно работать одинаково и под Linux и под Windows.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Июль 01, 2010, 12:09 »

http://www.prog.org.ru/topic_13982_0.html
http://www.prog.org.ru/topic_14136_0.html
Qt::WindowStaysOnTopHint, Qt::WindowStaysOnBottomHint
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.