crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

5 страниц V  « < 2 3 4 5 >  
Ответить в данную темуНачать новую тему
> Рисование во вкладках, В каждой вкладке - свой рисунок. Как сделать?
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, 13:22) *
Так я и думал - папки debug и release не удалил ))
ЭЭ, а они причем? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 4.8.2010, 12:34
Сообщение #34


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(QMainWindow @ 4.8.2010, 15:33) *
ЭЭ, а они причем?

мусорный объём в архиве. А так - ни при чём )

Вот так, с ходу, не понял, где косяк. Щас копаться нет возможности, точно вечером
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Цитата(QMainWindow @ 4.8.2010, 18:13) *
Когда мы в заголовочном файле пишем наш класс, то после закрывающей фигурной скопки }, надо ставить ночку с запятой ;

вообще то, по синтаксису C++, это надо делать после любого класса, структуры, юниона или енума (class,struct,union,enum) :)


Когда реализация функции пишется вне тела класса, нужно добавлять область видимости:
void PaintWidget::paintEvent(QPaintEvent *event)
{
}


Для того, чтоб было видно определение класса QPainter, нужно вставить инклуд
#include <QPainter>



PointArrayXY у тебя определён в MainWindow , а пытаешься его исользовать в PaintWidget::paintEvent() без указания экземпляра класса MainWindow. Для этого нужно получить указатель на эту переменную. Я сделал это через конструктор

PaintWidget::PaintWidget(QWidget* pParent,QPointF* pPointArrayXY)
    :QWidget(pParent)
{
    m_pPointArrayXY=pPointArrayXY;
}

(заодно и указатель на родитель приделал - а почему у тебя его не было ? )) )


Соответственно, всё это передаём в конструктор

PageForGraphic = new PaintWidget(this,PointArrayXY);



Но, надо сказать, это всё костыль. Не ООП. У тебя изначально кривоватая структура. Потом всё это всплывёт, понаступай на грабли, почитай книжки :)

И синтаксис C++ учи.

Вот, что у меня получилось. Не запускал, только скомпилировал

Сообщение отредактировал Алексей1153 - 5.8.2010, 6:20
Прикрепленные файлы
Прикрепленный файл  MNK.zip ( 26.22 килобайт ) Кол-во скачиваний: 90
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

5 страниц V  « < 2 3 4 5 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 10:48