Russian Qt Forum
Августа 24, 2025, 11:08
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Рисование в Qt
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Рисование в Qt (Прочитано 21821 раз)
Николай
Гость
Рисование в 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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...