QWidget смена системы координат |
Здравствуйте, гость ( Вход | Регистрация )
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'ом и в нем с помощью анимации увеличивать ширину самой области дока,но в таком случае это не затрагивает виджеты,которые на нём расположены |
|
|
Текстовая версия | Сейчас: 15.1.2025, 6:21 |