Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 19:03   #1
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию Проблема с рисованием

Помогите плиз разобраться с рисованием в виджете. Сделе следующее:
Код:
#ifndef PAPER_H
#define PAPER_H

#include <QWidget>
#include <QImage>
#include <QPainter>
#include <QPoint>
#include <QMouseEvent>

class paper : public QWidget
{
public:
    paper(QWidget *parent);
    void mousePressEvent(QMouseEvent * e);
    void paintEvent(QPaintEvent* e);
    void test();
protected:
    QPoint *p;
    QImage *im;
};

#endif // PAPER_H
Код:
#include "paper.h"



paper::paper(QWidget* parent)
{
    this->setHidden(false);
    this->setParent(parent);
    this->setMouseTracking(true);
    p=new QPoint(0,0);
    im=new QImage(this->width(),this->height(),QImage::Format_RGB32);
}
void paper::mousePressEvent(QMouseEvent *e)
{
    *(this->p)=e->pos();        //получение координаты клика
    test();
    this->update();
}

void paper::paintEvent(QPaintEvent *e)      //отрисовка объекта заданного в im
{
    QPainter pen(this);     //создание painter для paper
    pen.drawImage(QPoint(0,0),*(this->im));
}

void paper::test()
{
    im->setPixel(*(this->p),Qt::green);
}
Ну и конечно всё прицепил на окошко. Проблема в том, что отрисовка точки не происходит, несмотря на то, что и ошибок вроде как нет. По крайней мере QT не ругается.
Farrel вне форума Ответить с цитированием
Старый 25.05.2011, 20:22   #2
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Конкретизируб проблему. Скорее всего ошибка находится в
Код:
void paper::test()
{
    im->setPixel(*(this->p),Qt::green);
}
так как сам QImage прорисовывается 100% а вот точка на нём не появляется.
Farrel вне форума Ответить с цитированием
Старый 25.05.2011, 21:25   #3
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Собственно проблема решена. Если кому интересно, или встретились с аналогичным траблом, то проблема была в установке цвета.
Код:
void paper::test()
{
    im->setPixel(*(this->p),Qt::green);
}
надо исправить на
Код:
void paper::test()
{
        im->setPixel(*(this->p),color.rgb());
}
где color естессно объявлен в классе и инициализировани следю образом
Код:
//объявление 
QColor color;
//инициализация
color.setRgb(125,150,180);

Последний раз редактировалось Farrel; 25.05.2011 в 22:04.
Farrel вне форума Ответить с цитированием
Старый 26.05.2011, 01:20   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Балда, напиши так тогда уж
Код:
void paper::test()
{
    static const QColor color(125, 150, 180);
    im->setPixel(*(this->p),Qt::green);
}
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рисованием в заголовке AndreyPik Win Api 3 22.11.2010 14:47
Проблема с рисованием на Timage Delphi7 Dalagardi Помощь студентам 1 19.04.2010 20:48
Проблема с рисованием на канве в TPaintBox pro100-delphi Помощь студентам 10 09.03.2010 19:41
проблема с рисованием сферы kady Помощь студентам 14 25.01.2010 17:48
Проблема с рисованием прямоугольника Юра. Общие вопросы Delphi 13 04.08.2007 06:08