Добрый день. У меня есть QApplication , который состоит из 4 х виджетов - вкладок.
В каждой вкладке есть QOpenGlWidget, которые share между собой context
К сожалению после того как я переключаю вкладки Event::Show не срабатывает. После клика мышкой -- тогда будет QOpenGLWidget перерисован Как можно это изменить?
m_glXRayWidget = new QOpenGLWidget(this);
if (data->pShareGLContext == NULL)
data->pShareGLContext = m_glXRayWidget->context();
else
m_glXRayWidget->context()->setShareContext(data->pShareGLContext);
bool XrayLoad::event(QEvent* e)
{
QWidget::event(e);
if (e->type() == QEvent::Show )
{
if (firstTime){
firstTime = false;
workerThread = new PatLoadThread(data);
connect(workerThread, SIGNAL(process()), this, SLOT(progressChanged()));
connect(workerThread, SIGNAL(finished()), this, SLOT(progressFinished()));
workerThread->start();
}
else{
update();
}
}
return true;
}
void XrayLoad::paintEvent(QPaintEvent * event)
{
m_glXRayWidget->makeCurrent();
glClear(GL_COLOR_BUFFER_BIT);
if (data->arrayXRay.size() != 0)
{
if (data->arrayXRay[currentXray]->getVisible())
{
int maxDimSize = std::max(m_glXRayWidget->size().width(), m_glXRayWidget->size().height());
data->arrayXRay[currentXray]->initGL(m_glXRayWidget->size().width(), m_glXRayWidget->size().height());
data->arrayXRay[currentXray]->GL_RenderXRay(maxDimSize, maxDimSize);
data->arrayXRay[currentXray]->GL_ApplyCameraCalibration(data->arrayXRay[currentXray]->getZoom(), data->arrayXRay[currentXray]->getPosX(), data->arrayXRay[currentXray]->getPosY(), maxDimSize, maxDimSize, data->arrayXRay[currentXray]->getRotation(), data->arrayXRay[currentXray]->getIsFlipped(), true);
}
}
// now update openGL window
// m_glXRayWidget->swapBuffers();
}