Russian Qt Forum
Ноябрь 22, 2024, 06:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Рисование в Qt
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Рисование в Qt (Прочитано 21199 раз)
Николай
Гость
Рисование в 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();
}
Прога компилируется без ошибок, но почему-то при запуске получаю пустое окно.
Помогите разобраться.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Рисование в Qt
«
Ответ #1 :
Декабрь 22, 2004, 10:42 »
попробуй убить p.begin( this ); и p.end();
это во первых. во - вторых, функцию точно виртуальной объявил?
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Николай
Гость
Рисование в Qt
«
Ответ #2 :
Декабрь 22, 2004, 14:01 »
Попробовал убрать
p.begin( this );
p.end();
Все равно то же самое. Текст программы скопирован один к одному с *ui.h
Записан
xcs
Гость
Уверен, что твой widget видим?
«
Ответ #3 :
Декабрь 24, 2004, 16:37 »
Например, убери свой paintEvent, дай виджету setPaletteBackgroundColor(red), посмотри..
Записан
pilot.net
Гость
Re: Рисование в Qt
«
Ответ #4 :
Декабрь 27, 2004, 12:54 »
Цитата: "Николай"
Прога компилируется без ошибок, но почему-то при запуске получаю пустое окно.
Помогите разобраться.
Странно у меня все работает именно как ты делал !?
Записан
pilot.net
Гость
Рисование в Qt
«
Ответ #5 :
Декабрь 27, 2004, 13:01 »
Цитата: "Racheengel"
попробуй убить p.begin( this ); и p.end();
это во первых. во - вторых, функцию точно виртуальной объявил?
Это бред что первое - вообще рисовать не будет
что второе - виртуальной функцию определить один раз в родительском классе и везде она будет виртуальной
Записан
Николай
Гость
Re: Рисование в Qt
«
Ответ #6 :
Декабрь 27, 2004, 15:07 »
Странно у меня все работает именно как ты делал !?[/quote]
Работает как? Т.е рисунок выводится на iconView или как у меня - пустой? Кстати, если координаты левого верхнего угла прямоугольника установить (0,0), то краешек фигуры виден на главной форме. Никак не могу "сообщить" Qt, чтобы он рисовал на iconView.
Записан
Anonymous
Гость
Re: Рисование в Qt
«
Ответ #7 :
Декабрь 27, 2004, 15:19 »
Цитата: "Николай"
Странно у меня все работает именно как ты делал !?
Работает как? Т.е рисунок выводится на iconView или как у меня - пустой? Кстати, если координаты левого верхнего угла прямоугольника установить (0,0), то краешек фигуры виден на главной форме. Никак не могу "сообщить" Qt, чтобы он рисовал на iconView.[/quote]
тебе надо переопределить не
void Form1::paintEvent( QPaintEvent * )
а void QIconView::paintEvent( QPaintEvent * )
Записан
pilot.net
Гость
Re: Рисование в Qt
«
Ответ #8 :
Декабрь 27, 2004, 15:21 »
Цитата: "Anonymous"
Цитата: "Николай"
Странно у меня все работает именно как ты делал !?
Работает как? Т.е рисунок выводится на iconView или как у меня - пустой? Кстати, если координаты левого верхнего угла прямоугольника установить (0,0), то краешек фигуры виден на главной форме. Никак не могу "сообщить" Qt, чтобы он рисовал на iconView.
тебе надо переопределить не
void Form1::paintEvent( QPaintEvent * )
а void QIconView::paintEvent( QPaintEvent * )[/quote]
это я ответил
Записан
Николай
Гость
Рисование в Qt
«
Ответ #9 :
Декабрь 28, 2004, 08:48 »
Выдает error C2509: 'paintEvent': member function not declared in 'QIconView'
Записан
pilot.net
Гость
Re: Рисование в Qt
«
Ответ #10 :
Декабрь 28, 2004, 09:12 »
Цитата: "Николай"
Выдает error C2509: 'paintEvent': member function not declared in 'QIconView'
Ты объясни что тебе надо
вот для рисование фона есть функция virtual void QIconView::drawBackground ( QPainter * p, const QRect & r )
Записан
Николай
Гость
Рисование в Qt
«
Ответ #11 :
Декабрь 28, 2004, 09:24 »
Надо написать программу, в которой пользователь в главном окне вводил бы данные, а результаты в виде графика выводились бы в новом окне. Поскольку графиков может быть несколько, необходимо, чтобы пользователь листал страницы. Мне казалось, что для этого QWidgetStack наиболее подходящий.
Записан
pilot.net
Гость
Рисование в Qt
«
Ответ #12 :
Декабрь 28, 2004, 09:46 »
Рочему тебе не использовать QTabBar а туда вставлять QWidget и на нем рисовать ?
или еще лучше QCanvas
посмотри
http://qwt.sourceforge.net/
там есть готовые графики
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...