Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Рисование на QScrollArea, непосредственно на виджете прокрутки 
:(
    Опции темы
NumLock
Дата 7.10.2008, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.7.2006
Где: Иркутск

Репутация: нет
Всего: нет



У меня есть класс унаследованный от QScrollArea. Он отображает виджет заданный другим классом, а тот в свою очередь рисуется с помощью paintEvent. Мне необходимо рисовать непосредственно на QScrollArea, насколько я понял отрисовываться могут все классы унаследованные от QPaintDevice. Я в своем потомке говорю:

Код

void MyScrollClass::paintEvent(QPaintEvent *event)
{
  QPainter painter(this); // header для QPainter включен
  painter.drawEllipse(QRect(0, 0, 10, 100)); // это для проверки
}


Он ничего не рисует, я добавляю туда вывод MessageBox, он не отображается. Из чего я делаю вывод, что метод не вызывается. Способ реализации не важен, нужно иметь возможность в пределах QScrollArea рисовать что-нибудь, чтобы при скролле изображение оставалось на месте. Я реализую альтернативный скролл.

Это сообщение отредактировал(а) NumLock - 7.10.2008, 08:05
PM MAIL ICQ Skype Jabber   Вверх
Elfebet
Дата 7.10.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



пример
Код

class QScrollEx : public QScrollArea
{
    Q_OBJECT
public:

    QScrollEx(QWidget *parent = 0) : QScrollArea(parent)
    {
    }

    ~QScrollEx()
    {
    }

private:

    void paintEvent(QPaintEvent *e)
    {
        QScrollArea::paintEvent(e);

        QPainter painter(this->viewport());
        painter.setPen(QPen(Qt::darkMagenta, 5));
        painter.setBrush(Qt::red);
        int w = width();
        int h = height();
        painter.drawRect(0, 0, w, h);
        painter.end();
    }

};



--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
NumLock
Дата 13.10.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.7.2006
Где: Иркутск

Репутация: нет
Всего: нет



Ничего не понимаю. Не работает. Т.е. когда компилирую этот класс в рамках отдельного проекта - работает, а когда встраиваю в свой нет...

Я по-пробовал скрывать рисуемый в QScrollArea виджет. В этом случае видно, что отрисовывает QScrollArea, иначе сверху рисуется внутренний виджет и все затирает. Короче, знает ли кто-нибудь, как можно сменить порядок отрисовки?
PM MAIL ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1636 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.