crossplatform.ru

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

> QPaintEvent
Гость_Дмитрий_*
сообщение 28.4.2009, 23:23
Сообщение #1





Гости








    


Хочу нарисовать башенку из прямоугольников определённой высоты в зависимости от положения ползунка (при каждом изменении его положения башенка перерисовывается). Подскажите, пожалуйста, как это реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 29.4.2009, 2:40
Сообщение #2


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Накидал элементарный примерчик.
Рисуется квадрат в центре окна. Колесиком мыши изменяются его размеры.
Примерно то что просили. Что непонятно, спрашиваете :)

mypaint.h
#include <QtGui>

class MyForm : public QFrame
{
    Q_OBJECT
    QRect rect;

public:
    MyForm(QWidget *parent = 0) : QFrame(parent) {
        setMinimumSize(240,180);
        rect.setSize(QSize(25,25));
    }

protected:
    // событие перерисовки виджета
    void paintEvent(QPaintEvent *event) {
        QPainter painter(this);
        painter.setPen(Qt::blue);
        painter.setBrush(QBrush(Qt::red));

        // перемещаем наш прямоугорльник в центр данной области рисования
        rect.moveCenter(painter.window().center());
        // отрисовываем наш прямоугольник
        painter.drawRect(rect);
    }

    // событие вращения колесика мышки
    void wheelEvent (QWheelEvent *event) {
        // delta() возвратит +-120, в зависимости от направления вращения колесика мыши
        int step = event->delta() / 6;
        // изменяем размеры нашего прямоугольничка на 2*step
        rect.adjust(-step,-step, step,step);
        // делаем запросс на перерисовку виджета
        update();
    }
};

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 16.1.2025, 0:31