|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|||||||||||
QWidget и его связь с QPainter27.05.2015, 15:34. Показов 4341. Ответов 37
Метки нет (Все метки)
Здравствуйте.Возникла проблема при реализации поставленной цели.
Имеется программа при запуске которой появляется окно с виджетами(QLabel,QLineEdit,QPushButton,Q TextEdit) в итоге в данном окне в поля lineEdit вводятся значения.после нажатия на кнопку (pushBatton) вызывается функция которая дальше работает с данными значениями и в конечном итоге выдает в поле(textEdit) вычисленные в программе значения.Сейчас требуется после поля textEdit создать еще виджет и чтобы при нажатии кнопки еще и в этот виджет выводился рисунок построенный с помощью QPainter. Пробовала просто для начала без своих значений вывести в мой виджет пример из книги:
А если создаю виджет в котором хочу чтобы потом отображалась моя фигура и прописываю его название вместо this то фигура вообще не выводится.и поле остается пустым.
И не понятно как сделать так чтобы вырисовывало фигуру только после нажатия кнопки да еще и используя посчитанные значения полученные в вызванной после нажатия кнопки функции .
0
|
|||||||||||
| 27.05.2015, 15:34 | |
|
Ответы с готовыми решениями:
37
Про QWidget и рисование на нём QPainter Как открыть QWidget из QWidget по нажатию кнопки Как связать QWidget* w = new QWidget(this) с файлом формы UI ? |
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
||||||||||||||||||||||||||
| 01.06.2015, 17:15 [ТС] | ||||||||||||||||||||||||||
|
canvas.h
В canvas->update canDrawShape почему то снова false становится...
0
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|
| 01.06.2015, 17:26 [ТС] | |
|
Спасибо огромное)))ты гений)
0
|
|
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|
| 02.06.2015, 17:32 [ТС] | |
|
А если необходимо чтобы мой рисунок обновлялся при изменении значений и повторном нажатии на кнопку то функция update не подойдет?просто как я поняла она и отвечает за перерисовку.но при нажатии на кнопку с новыми значениями почему то не изменяются мои фигуры...
0
|
|
|
|
||
| 02.06.2015, 17:45 | ||
|
Вызов update() вызывает paint() ( Но paint() может вызыватьсяи при других "событиях" )
Добавлено через 4 минуты
1
|
||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,341
|
|
| 02.06.2015, 21:45 | |
|
Посмотрите здесь (Qt 4.8). Рисуется как раз по нажатию кнопки:
1
|
|
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
||||||||||||||||
| 03.06.2015, 09:34 [ТС] | ||||||||||||||||
|
alexu_007, спасибо)Но у меня не график рисуется а фигуры и помимо них нужно еще вводить самой значения и выводить нужные расстояния.Так что думаю что мне этот вариант не подойдет. Проще разобраться с тем что уже имею.
Добавлено через 21 минуту Avazart, canvas.h
canvas.cpp
goDialog.cpp
0
|
||||||||||||||||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,341
|
||||||||||||||||
| 03.06.2015, 09:38 | ||||||||||||||||
|
Раз проще - конечно разбирайтесь. Но я бы всё же посоветовал посмотреть, как оно работает у других. Потому что принцип тот же:
График рисуется не сам по себе, а с помощью линий, для которых заранее готовятся координаты (следующая линия начинается с конца предыдущей). Весь этот массив данных
1
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|
| 03.06.2015, 11:09 [ТС] | |
|
Суть та же,и прописываю так же разве что update вместо repaint использовала,но перерисовывать с новыми значениями все равно не хочет((не могу понять в чем проблема(
0
|
|
|
|
||||||
| 03.06.2015, 11:25 | ||||||
Если хочешь что были заметны изменения, то итерировать нужно например в таймере с интервалом.
1
|
||||||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,341
|
|
| 03.06.2015, 11:25 | |
|
Ну попробуйте вы repaint(); поставить, може перерисуется. Код в paintEvent всегда рисует одно и то же по данным (координатам), которые вы ему даёте. При нажатии кнопки меняете данные и вызываете repaint - картинка меняется.
Может вы ему всё время одни те же данные подсовываете - он и рисует то же, а впечатление что не перерисовывает вообще. Вы вообще как то сразу всё приложение написать хотите, а чтобы сразу всё заработало - надо быть гуру. А потом не понимаете, где и что у вас не работает. Я когда писал "синусоиду" сперва точку на форме нарисовал, потом отрезок - чтобы понять сам принцип. Потом "заставил" отрезок двигаться по нажатию кнопки. И так далее, от простого к сложному.
1
|
|
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|
| 03.06.2015, 11:39 [ТС] | |
|
Avazart, да мне и нужен самый последний вариант при котором выполняется условие if)Проблема в другом.это нарисуется последний рисунок который удовлетворяет условию,а если допустим я изменю значение в одном из полей lineEdit то посчитаются уже другие значения и соответственно с моим условием должна другая картинка уже стать.если я по новой запускаю программу и изменяю до нажатия кнопки значения то рисуется последний вариант для условия для этих значений.Но я не хочу каждый раз по новой запускать программу для новых значений)
Добавлено через 4 минуты alexu_007, с repaint тоже не чертит.пошагово проверяла меняются ли при изменении значений мои координаты.так вот при изменении значений координаты изменяются,но функция update не хочет обновлять картинку.
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,341
|
|||||||||||
| 03.06.2015, 11:40 | |||||||||||
|
Есть такая штука, называется - отладка. Вставляете в начало файла
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|
| 03.06.2015, 11:47 [ТС] | |
|
alexu_007, у меня помимо картинки в программе еще и обновляется текст который я вывожу в поле textEdit))так вот после изменения значений в поле textEdit меняются значения полученные при расчетах в отличие от картинки)так что if точно проходит как надо)и если поставить пошагово циклы проверять то значения меняются)
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,341
|
|||||||||||
| 03.06.2015, 11:55 | |||||||||||
|
Значит у вас проблемы с рисованием. Хотя я бы с рисования и начал, т.к. самое геморойное - сперва научился бы рисовать хоть что-то, а затем писать остальное.
У меня:
1
|
|||||||||||
|
|
||||||||||||
| 03.06.2015, 11:59 | ||||||||||||
Natalyyy, Может
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 20
|
|
| 03.06.2015, 12:03 [ТС] | |
|
Avazart, canvas->G_x=G.x*10;
тут же в правой части переменная структуры используется)не G_x, а G.x это переменная класса goDialog а G_x переменная класса Canvas.тогда если я пропишу как вы посоветовали то будут подставляться мои обнуленные значения.
0
|
|
| 03.06.2015, 12:03 | |
|
Создание QWidget внутри QWidget STAThreadAttribute и его связь с Main Дочерние окно и его связь с главным Использование метода Invoke() и его связь с потоками Вопрос про имеющийся сайт, его связь с биржей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|