Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Martiro от Ноябрь 28, 2007, 13:10



Название: Почему не рисует?
Отправлено: Martiro от Ноябрь 28, 2007, 13:10
Никак не могу разобраться...
Есть форма (от QScrollView), на ней виджет... рисую что-то в канве и нулевой результат...  :(

Код:
#include "fr_img.h"

//==========================================
// Конструктор
//==========================================
   DocWindow::DocWindow(QWidget* pwgt, const char * pszName, WFlags flags)
    :  QScrollView(pwgt, pszName)
{
wImage = new QWidget(this->viewport(),0, Qt::WNoAutoErase);
addChild(wImage);
wImage->setCursor(Qt::CrossCursor);
resize(400,300);
}


//==========================================
//     Загрузка формы
//==========================================
void DocWindow::loadBmp(QString sFileName)
{QApplication::setOverrideCursor( waitCursor );
    m_strFileName = sFileName;
    img.load(m_strFileName);
    wImage->resize(img.width(), img.height()); 
    wImage->setBackgroundPixmap(img);
QApplication::restoreOverrideCursor();
}


............................................
............................................



//==========================================
//     Оторисовка линии
//==========================================
void DocWindow::drawLine( QPainter *paint )
{     
  QCanvas canvas(wImage);
  canvas->resize(img.width(), img.height());
  QCanvasRectangle pCR = new QCanvasRectangle(&canvas);
  pCR->setPen(Qt::black);
  pCR->setBrush(Qt::green);
  pCR->setSize(120, 80);
  pCR->setX(10);
  pCR->setY(10);
  pCR->show();

  canvas.update();
}


Название: Re: Почему не рисует?
Отправлено: Martiro от Ноябрь 29, 2007, 09:10
Давил отрисовку в paintEvent, но результата никакого...


Название: Re: Почему не рисует?
Отправлено: BaltikS от Ноябрь 29, 2007, 10:40
Честно говоря, не фига не понятно.... Причём тут QScrollView и QCanvas? Если используется QCanvas, то они рисуется на QCanvasView! Если рисуется на QScrollView, то рисовать нужно на viewport-е ....


Название: Re: Почему не рисует?
Отправлено: alex12 от Ноябрь 29, 2007, 11:29
Меня смущает:
Код:
wImage = new QWidget(this->viewport(),0, Qt::WNoAutoErase);
Может не надо давать в качестве parent'а viewport()? Все равно же следующей
командой он ставится как новый viewport, а старый уничтожантся...