Ничего не получается с рисованием на виджете |
Здравствуйте, гость ( Вход | Регистрация )
Ничего не получается с рисованием на виджете |
Litkevich Yuriy |
24.4.2008, 17:54
Сообщение
#11
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну размести рисунок на одном виджете, и воткни его в тот на котором кнопки.
Вот Layout (компоновщик) может сам как надо отрегулировать:
|
|
|
Don |
24.4.2008, 18:23
Сообщение
#12
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Понял спасибо!
А почеиу текст нужно выводить именно через tr()? Почему нельзя просто QPushButton btn("Text");? |
|
|
Litkevich Yuriy |
24.4.2008, 18:27
Сообщение
#13
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я пишу в кодировке UTF-8, но строковые переменные использую в виндовозовской кодировке, иниче возникают проблемы с БД, которые я еще не победил, чтобы Qt'я могло использовать разные кодировки в разных местах, я делаю так:
тогда константы строковые помещаю в tr(), она в UTF-8, остальное Windows-1251 Если текст программы в виндовозовской кодировке, то вторую строку можешь не писать, и tr() не использовать, но лучше использовать, чтобы небыло проблем в будущем, в частности с горячими кнопками при разных раскладках клавиатуры. |
|
|
Don |
24.4.2008, 20:17
Сообщение
#14
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Как нарисовать дугу? Пытался через drawArc(), не получается - выводится точка.
|
|
|
Litkevich Yuriy |
24.4.2008, 20:28
Сообщение
#15
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
а как ты это делал? приведи код
|
|
|
Don |
24.4.2008, 20:37
Сообщение
#16
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
а как ты это делал? приведи код Ну вот вся прога:
Причина редактирования: используй кнопку "Код" ([code=cpp])
|
|
|
Litkevich Yuriy |
24.4.2008, 21:07
Сообщение
#17
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Смотри для начала рабочий пример в каталоге %QTDIR%\examples\painting\basicdrawing, там есть дуги, а тут его описание Basic Drawing Example
руководство по функции: Цитата void QPainter::drawArc ( const QRectF & rectangle, int startAngle, int spanAngle ) Draws the arc defined by the given rectangle, startAngle and spanAngle. The startAngle and spanAngle must be specified in 1/16th of a degree, i.e. a full circle equals 5760 (16 * 360). Positive values for the angles mean counter-clockwise while negative values mean the clockwise direction. Zero degrees is at the 3 o'clock position. Пример, от туда
сравни цифры startAngle и spanAngle, со своими остальное должно работать, Модификация примера Макса Шлее:
|
|
|
Don |
24.4.2008, 21:09
Сообщение
#18
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Смотри для начала рабочий пример в каталоге %QTDIR%\examples\painting\basicdrawing, там есть дуги, а тут его описание Basic Drawing Example Вот тот код который рисует дугу из примера: QRect rect(10, 20, 80, 60) // я так понял задаётся прямоугольник в который вписывается эллипс int startAngle = 30 * 16; int arcLength = 120 * 16; painter.drawArc(rect, startAngle, arcLength); Ввёл в свою прогу, нарисовалась такая же дуга. Но как работать с этими углами? Шаманю со множителями, получаются куски эллипса, причём каждый раз кординально разные. Мне нужно нарисовать просто улыбочку. |
|
|
Litkevich Yuriy |
24.4.2008, 21:19
Сообщение
#19
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
смотри мой предыдущий пост.
startAngle и spanAngle должны быть определены в ед. 1/16-ой градуса, т.е. полная окружность равна 5760 (16 * 360). Положительное значение углов означает направление против часовой стрелки, а отрицательное - по часовой. Нуль градусов находится в позиции 3 часа. |
|
|
Don |
19.5.2008, 20:38
Сообщение
#20
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Смотрите, все что рисуется на форме должно находится в функции paintEvent(). Допустим рисуются какие-то объекты по предворительным рсчётам, которые проводятся в другой функции. И если вызвать в этой фукции функцию repaint(), то происходит перерисовка с учётом расчётов. Получется функция repaint() вызывает функцию paintEvent(). Так?
|
|
|
Текстовая версия | Сейчас: 27.11.2024, 4:16 |