Название: Рисование в Qt Отправлено: Николай от Декабрь 21, 2004, 08:59 Недавно начал осваивать Qt. У меня версия Qt-win-commercial-3.3.3.
Не получается простейшая программа. Хочу нарисовать что-нибудь, но не прямо на форме, а используя WidgetStack. Итак, создаю пустой Main Window, ложу на форму WidgetStack, ложу на нее iconView, пишу код: void Form1::paintEvent( QPaintEvent * ) { QPainter p; p.begin( this ); p.setPen( Qt::blue ); QBrush b1( Qt::blue ); p.setBrush( b1 ); p.drawRect( 10, 10, 200, 100 ); p.end(); } Прога компилируется без ошибок, но почему-то при запуске получаю пустое окно. Помогите разобраться. Название: Рисование в Qt Отправлено: Racheengel от Декабрь 22, 2004, 10:42 попробуй убить p.begin( this ); и p.end(); :)
это во первых. во - вторых, функцию точно виртуальной объявил? :) Название: Рисование в Qt Отправлено: Николай от Декабрь 22, 2004, 14:01 Попробовал убрать
p.begin( this ); p.end(); Все равно то же самое. Текст программы скопирован один к одному с *ui.h Название: Уверен, что твой widget видим? Отправлено: xcs от Декабрь 24, 2004, 16:37 Например, убери свой paintEvent, дай виджету setPaletteBackgroundColor(red), посмотри..
Название: Re: Рисование в Qt Отправлено: pilot.net от Декабрь 27, 2004, 12:54 Цитата: "Николай" Прога компилируется без ошибок, но почему-то при запуске получаю пустое окно. Помогите разобраться. Странно у меня все работает именно как ты делал !? Название: Рисование в Qt Отправлено: pilot.net от Декабрь 27, 2004, 13:01 Цитата: "Racheengel" попробуй убить p.begin( this ); и p.end(); :) это во первых. во - вторых, функцию точно виртуальной объявил? :) Это бред что первое - вообще рисовать не будет что второе - виртуальной функцию определить один раз в родительском классе и везде она будет виртуальной Название: Re: Рисование в Qt Отправлено: Николай от Декабрь 27, 2004, 15:07 Странно у меня все работает именно как ты делал !?[/quote]
Работает как? Т.е рисунок выводится на iconView или как у меня - пустой? Кстати, если координаты левого верхнего угла прямоугольника установить (0,0), то краешек фигуры виден на главной форме. Никак не могу "сообщить" Qt, чтобы он рисовал на iconView. Название: Re: Рисование в Qt Отправлено: Anonymous от Декабрь 27, 2004, 15:19 Цитата: "Николай" Странно у меня все работает именно как ты делал !? Работает как? Т.е рисунок выводится на iconView или как у меня - пустой? Кстати, если координаты левого верхнего угла прямоугольника установить (0,0), то краешек фигуры виден на главной форме. Никак не могу "сообщить" Qt, чтобы он рисовал на iconView.[/quote] тебе надо переопределить не void Form1::paintEvent( QPaintEvent * ) а void QIconView::paintEvent( QPaintEvent * ) Название: Re: Рисование в Qt Отправлено: pilot.net от Декабрь 27, 2004, 15:21 Цитата: "Anonymous" Цитата: "Николай" Странно у меня все работает именно как ты делал !? Работает как? Т.е рисунок выводится на iconView или как у меня - пустой? Кстати, если координаты левого верхнего угла прямоугольника установить (0,0), то краешек фигуры виден на главной форме. Никак не могу "сообщить" Qt, чтобы он рисовал на iconView. тебе надо переопределить не void Form1::paintEvent( QPaintEvent * ) а void QIconView::paintEvent( QPaintEvent * )[/quote] это я ответил Название: Рисование в Qt Отправлено: Николай от Декабрь 28, 2004, 08:48 Выдает error C2509: 'paintEvent': member function not declared in 'QIconView'
Название: Re: Рисование в Qt Отправлено: pilot.net от Декабрь 28, 2004, 09:12 Цитата: "Николай" Выдает error C2509: 'paintEvent': member function not declared in 'QIconView' Ты объясни что тебе надо вот для рисование фона есть функция virtual void QIconView::drawBackground ( QPainter * p, const QRect & r ) Название: Рисование в Qt Отправлено: Николай от Декабрь 28, 2004, 09:24 Надо написать программу, в которой пользователь в главном окне вводил бы данные, а результаты в виде графика выводились бы в новом окне. Поскольку графиков может быть несколько, необходимо, чтобы пользователь листал страницы. Мне казалось, что для этого QWidgetStack наиболее подходящий.
Название: Рисование в Qt Отправлено: pilot.net от Декабрь 28, 2004, 09:46 Рочему тебе не использовать QTabBar а туда вставлять QWidget и на нем рисовать ?
или еще лучше QCanvas посмотри http://qwt.sourceforge.net/ там есть готовые графики |