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
  опции профиля:
сообщение 17.10.2010, 10:14
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 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'ом и в нем с помощью анимации увеличивать ширину самой области дока,но в таком случае это не затрагивает виджеты,которые на нём расположены:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 15.1.2025, 6:21