crossplatform.ru

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

> Подскажите как работать с QPainter, Проблемы с отрисовкой с помошью QPainter
bayah
  опции профиля:
сообщение 18.5.2011, 16:44
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

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




Репутация:   0  


Не пойму как толком работает QPainter. Поэтому вот элементарный код который я тестил:

#include <QtGui/QApplication>
#include <QWidget>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget *b = new QWidget;                //Создаю QWidget
    QPainter *painter = new QPainter(*b);   //создаю QPainter, передаю ему указатель на QWidget.
    painter->drawLine(10, 10, 300, 300);   //рисую линию

    b->show();
    b->repaint();

    return a.exec();

}

В результате ничего не отображается. Почему?

Сразу задам мучающие меня вопросы по этому поводу:
- для чего метод begin(QPaintDevice*), если мы девайс для отрисовки указываем и так при создании?
- (собственно что мне нужно от этой отрисовки) как вывести на главный виджет какую нибудь область(другой виджет - QGraphicsView, например) и рисовать только на нем

мерси

Сообщение отредактировал bayah - 18.5.2011, 16:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
bayah
  опции профиля:
сообщение 20.5.2011, 18:31
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

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




Репутация:   0  


Хотя у меня че-то не работает даже примитивный код.
Тут я пытаюсь унаследовать от создать класс DrawWidget унаследовав его от QGraphicWidget переопределив в нем paintEvent и отрисовать в нем что нибудь.
Вот такой код. Почему не отрисовывается?


drawwidget.h
#ifndef DRAWWIDGET_H
#define DRAWWIDGET_H

#include <QtGui>

class DrawWidget : public QGraphicsView{

public:
    DrawWidget(QWidget *parent = 0);

protected:
    void paintEvent(QPaintEvent *event);

private:

};

#endif // DRAWWIDGET_H

drawwidget.cpp


drawwidget.cpp
#include "DrawWidget.h"
#include <QtGui>

DrawWidget::DrawWidget(QWidget* parent):
        QGraphicsView(parent)
{

}


void DrawWidget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawLine(10, 10, 40, 50);

}



main.cpp
#include <QtGui/QApplication>
#include "dialog.h"
#include "DrawWidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget pWidget;
    DrawWidget pView(&pWidget);
    QVBoxLayout pLayout;
    pLayout.addWidget(&pView);

    pView.show();
    pWidget.setLayout(&pLayout);
    pWidget.show();

    return a.exec();
}


Сообщение отредактировал bayah - 20.5.2011, 18:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 20.4.2024, 13:58