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