Рисование во вкладках, В каждой вкладке - свой рисунок. Как сделать? |
Здравствуйте, гость ( Вход | Регистрация )
Рисование во вкладках, В каждой вкладке - свой рисунок. Как сделать? |
QMainWindow |
4.8.2010, 11:19
Сообщение
#31
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Может так: http://slil.ru/29530936.
wiz29, спасибо, но уже разобрались. Для каждого виджета - эксклюзивный paintEvent.)) |
|
|
Алексей1153 |
4.8.2010, 12:33
Сообщение
#32
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
QMainWindow, тоже не качается. Попробую вечером из дома
скачал. Так я и думал - папки debug и release не удалил )) Сообщение отредактировал Алексей1153 - 4.8.2010, 12:34 |
|
|
QMainWindow |
4.8.2010, 12:33
Сообщение
#33
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Алексей1153 |
4.8.2010, 12:34
Сообщение
#34
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
QMainWindow |
4.8.2010, 12:36
Сообщение
#35
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Нет проблем. Главное чтобы косяк убрать, а то работать дальше нельзя. И все мозгИ сломал, не знаю, что делать...
|
|
|
Алексей1153 |
4.8.2010, 12:41
Сообщение
#36
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
QMainWindow, времени у тебя, смотрю, вагон. Закомментируй всё любое, а потом открывай потихоньку, пока не заругается. Там и надо искать. Такой метод применим, когда голова уже квадратная, а компилятор всё ещё ругается ))
Только не забудь копию проекта сделать |
|
|
QMainWindow |
4.8.2010, 15:13
Сообщение
#37
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я понял, в чем косяк был - я был слепым!
Когда мы в заголовочном файле пишем наш класс, то после закрывающей фигурной скопки }, надо ставить ночку с запятой ; !!! А у меня ее не было, и оттуда косяк(подказали прогеры с прогорг). Зато теперь вместо одной ошибки - целых 6! И все связаны с тем, что методы и поля, которые я использую в paintEvent моего виджета (и в частности массив с точками, которые я хочу отобразить) не декларированы! (они объявлены в заголовочном файле главного окна, и мой виджет их не видит). Будем думать как исправить. |
|
|
Алексей1153 |
4.8.2010, 17:12
Сообщение
#38
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Когда мы в заголовочном файле пишем наш класс, то после закрывающей фигурной скопки }, надо ставить ночку с запятой ; вообще то, по синтаксису C++, это надо делать после любого класса, структуры, юниона или енума (class,struct,union,enum) Когда реализация функции пишется вне тела класса, нужно добавлять область видимости: void PaintWidget::paintEvent(QPaintEvent *event) { } Для того, чтоб было видно определение класса QPainter, нужно вставить инклуд
PointArrayXY у тебя определён в MainWindow , а пытаешься его исользовать в PaintWidget::paintEvent() без указания экземпляра класса MainWindow. Для этого нужно получить указатель на эту переменную. Я сделал это через конструктор
(заодно и указатель на родитель приделал - а почему у тебя его не было ? )) ) Соответственно, всё это передаём в конструктор
Но, надо сказать, это всё костыль. Не ООП. У тебя изначально кривоватая структура. Потом всё это всплывёт, понаступай на грабли, почитай книжки И синтаксис C++ учи. Вот, что у меня получилось. Не запускал, только скомпилировал Сообщение отредактировал Алексей1153 - 5.8.2010, 6:20
Прикрепленные файлы
|
|
|
QMainWindow |
5.8.2010, 11:00
Сообщение
#39
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо! Все эти глупые ошибки выявил еще с самого начала (они не не от незнания языка, а от тупой невнимательности). Сделал через сигналы и слоты. В общем, теперь он работает, рисует, но вот другая проблема: когда я создаю несколько графиков (и соответственно столько же вкладок), то во всех вкладках отображается только один последний созданный график. Я так понимаю, это из-за того, что за все мои вкладки отвечает только одна переменная tab. Встает вопрос: как заставить прогу создавать переменные?
|
|
|
Алексей1153 |
5.8.2010, 11:02
Сообщение
#40
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
QMainWindow, ответ кроется в ООП: храни данные о графике в классе рисовальщика. Тогда данные будут автоматически свои в каждом графике. Можно также предусмотреть возможность рисовать не с внутренних данных, а через указатель с внешних
грабли №1 пройдены Сообщение отредактировал Алексей1153 - 5.8.2010, 11:02 |
|
|
Текстовая версия | Сейчас: 28.4.2024, 10:48 |