Russian Qt Forum
Ноябрь 26, 2024, 19:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: отрисовка pixmap на форме с масштабированием  (Прочитано 2179 раз)
Qlab
Гость
« : Декабрь 16, 2013, 20:10 »

Собственно проблема:
нужно отрисовать картинку, которая изменяется при изменении ползунка (значения).
Был создан производный класс от  QWidget, преобразован в новый класс, перегружен метод paintEvent(), создан соотвествующий слот, для соединения ползунка и картинки, но картинка почему-то не выводится на виджет.
код:
Цитировать
#include <QPixmap>
#include <QWidget>
#ifndef MYPICTURE_H
#define MYPICTURE_H

class MyPicture : public QWidget
{
    Q_OBJECT
public:
        MyPicture( QWidget *parent = 0);
        ~MyPicture();
protected:
        void paintEvent(QPaintEvent* pe);
private:
        QPixmap pixmap;
        double part;
public slots:
      void  myslot(int val);
};
#endif // MYPICTURE_H

Цитировать
#include "mypicture.h"
#include <QPaintEvent>
#include <Qpainter>
#include <QPixmap>
#include <QPaintDevice>
MyPicture::MyPicture( QWidget *parent): QWidget(parent)
{
    pixmap.load("1.jpeg");

   part = 1;
  
}
MyPicture::~MyPicture()
{

}
void MyPicture::paintEvent(QPaintEvent* pe)
{


    QPainter painter(this);
    painter.begin(&pixmap);
    QRect r(0, 0, width(), height());
    painter.drawPixmap(r, pixmap);
    painter.drawRect(r);
//    if (pe->region().contains(r))
//    {
//        painter.drawRect(r);

//    }
}
void  MyPicture::myslot(int val)
{
    part = val;
}
« Последнее редактирование: Декабрь 16, 2013, 20:13 от Qlab » Записан
Bepec
Гость
« Ответ #1 : Декабрь 16, 2013, 20:45 »

Ты рисуешь на пиксмапе пиксмап. Не вижу вывода на виджет Улыбающийся
Записан
Qlab
Гость
« Ответ #2 : Декабрь 16, 2013, 21:20 »

На форме создан объект типа MyPicture. Линия из faq строится, а картинка не отображается.
Записан
Bepec
Гость
« Ответ #3 : Декабрь 16, 2013, 21:59 »

Код:
 QPainter painter(this);
Эй, Пейнтер, мы рисуем на виджете!
Код:
    painter.begin(&pixmap);
Нет, Пейнтер,  мы рисуем на картинке!
Код:
    QRect r(0, 0, width(), height());
О боже, создаём рект с размерами виджета.
Код:
    painter.drawPixmap(r, pixmap);
Пейнтер, рисуем картинку на самой картинке!
 
Код:
   painter.drawRect(r);
Пейнтер, рисуем рект на картинке.

PS яснее стало? Если нет, читаем про
Цитировать
painter.begin
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.154 секунд. Запросов: 21.