Алекс17
Гость
|
|
« : Июль 07, 2006, 10:22 » |
|
Здравствуйте,
Мне нужно отрисовывать прямоугольник на окне QGLWidget для селектирования регионом. К окну QGLWidget подключен 3D Viewer из OpenCASCADE. Прблемма в том, что когда я рисую прямоугольник с помощью QPainter, поверх вьювера появляется фон Widget и затирает вьювер. В Qt3 таких проблемм не было, я использовал для вьювера обычный QWidget и все работало. А в Qt4 обычный QWidget все время при изменении размера окна затирает своим фоном вьювер. QGLWidget в этом смысле работает нормально. Но рисовать прямоугольник не получается. Как решить эту проблемму?
Код у меня примерно такой:
Q3VBox* vb = new Q3VBox( this); vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); myView = new View(vb);
..............
View::View(QWidget* parent) : QGLWidget( parent) { int windowHandle = (int) winId(); short hi, lo; lo = (short) windowHandle; hi = (short) (windowHandle >> 16); Handle(WNT_Window) hWnd = new WNT_Window(Handle(Graphic3d_WNTGraphicDevice)::DownCast(myContext->CurrentViewer()->Device()),(int) hi,(int) lo); myView->SetWindow( hWnd ); .......... }
void View::DrawRectangle(const int MinX, const int MinY, const int MaxX, const int MaxY) { QPainter thePainter(this); thePainter.setPen(Qt::white); QRect aRect; aRect.setRect( MinX, MinY, Maxx, Maxy); thePainter.drawRect(aRect); }
|