crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QWidget смена системы координат
ernie
  опции профиля:
сообщение 14.10.2010, 17:01
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


Доброго времени суток,господа.
Вопрос такой,можно ли сменить систему координат в виджете,т.е. например ширина виджета считается с левого края,мне же надо,чтобы она считалась с правого.
Заранее благодарю.

QPainter painter(this);
painter.translate(width(),0);
painter.rotate(90);
painter.save();
Не помогают,впечатление,что они ничего не изменили

В моем случае,есть виджет,который отрисовывается около края экрана и разворачивается,увеличивая ширину с помощью QAnimation,и если я разворачиваю слева направо,то никаких проблем,а вот как развернуть справа налево,я что-то немогу сообразить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 14.10.2010, 17:46
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


Как я понимаю для этого надо как то глобальную систему координат изменять или есть способ проще?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 15.10.2010, 16:39
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


Может есть какие-нибудь еще мысли как можно разворачивание виджета сделать?я делаю так,QPropertyAnimation,в setStartValue начальную(меньшую) ширину виджета,в setEndValue конечную(большую) ширину.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 15.10.2010, 23:02
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 232 раз(а)




Репутация:   29  


Цитата(ernie @ 15.10.2010, 17:39) *
Может есть какие-нибудь еще мысли как можно разворачивание виджета сделать?
OrientationButton
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 16.10.2010, 17:04
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


igor_bogomolov,спасибо за наводку,но это не совсем то)виджет у меня == главное окно(прозрачное),так можно ли как раз с этим окном такую штуку провернуть?ибо то что ты посоветовал,всё же относится к виджетам в пределах окна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 16.10.2010, 17:17
Сообщение #6


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 232 раз(а)




Репутация:   29  


ernie, если бы ты конкретнее написал что ты хочешь получить, возможно и ответ получил бы быстрее (ну или дельный совет).
А то сначала ты спрашивал как систему координат поменять, потом как развернуть виджет. Теперь оказывается что развернуть нужно главное окно программы.
Заголовки окна ты все равно не развернешь (если только через API системы, но тут я не советчик). Если же заголовки скрыты, то никакой разницы с тем примером что я привел выше я не вижу.
В общем описывай подробнее задачу, если есть возможность минимальный код приложи. А там уже подумаем чем можно помочь :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 17.10.2010, 10:14
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


igor_bogomolov, дико извиняюсь,правлю код писанный до меня,поэтому мысли немного путаются:)
В общем описываю всю ситуацию:
Есть окошко,у которого переобъявлен paintEvent и рисуется внешний вид нашего виджета,наследника QWidget,который представляет подобие дока,у окна выставлены флаги и атрибуты соответствующим образом:
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint |Qt::Tool);
setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
Т.е. на экране отрисовывается только то,что объявлено в paintEvent,а самого окна и его границ мы не видим.
При запуске программы окно с виджетом перемещается к одной из сторон экрана,и с помощью resize выставляется минимальная ширина.
Далее при наведении мыши док разворачивается(с помощью QPropertyAnimation,в котором увеличивается ширина окна),когда окно с левой стороны экрана - проблем нет,всё отлично отрисовывается и нет проблем с анимацией,но когда окно у правой кромки экрана,возникает проблема: если делаем разворачивание подобно тому как это делается слева,то получается что док отрисовывается за пределами экрана,если же делаем одновременно увеличение ширины и передвижение окна влево,то анимация идёт рывками и справа появляется на время анимации достаточно толстая полоска границы.
Вот в общем такая проблема:)

И да,желательно это сделать именно через ширину окна,потому как на виджете отрисовываются другие виджеты,и надо чтобы они тоже скрывались и разворачивались одновременно с доком:)это я к тому,что я уже пробовал не трогать ширину окна,а работать только с paintEvent'ом и в нем с помощью анимации увеличивать ширину самой области дока,но в таком случае это не затрагивает виджеты,которые на нём расположены:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2017, 14:25