no real OpenGL in Graphic in Qt Designer

This commit is contained in:
2021-07-15 16:00:01 +03:00
parent 4d423facd6
commit 12399b0c51
4 changed files with 16 additions and 9 deletions

View File

@@ -61,7 +61,7 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
canvas_gl = 0;
gesture_angle = 45.;
leg_update = true;
visible_update = fullscr = need_mouse_pan = false;
visible_update = fullscr = need_mouse_pan = m_fakeGL = false;
gestures =
#ifdef Q_OS_ANDROID
true;
@@ -334,7 +334,7 @@ void Graphic::canvasPaintEvent() {
}
QPainter p;
#ifdef HAS_GL
if (isOGL) {
if (isOGL && !m_fakeGL) {
p.fillRect(canvas->rect(), Qt::black);
glClearColor(0.f, 0.f, 0.f, 0.f);
p.begin(canvas);
@@ -358,7 +358,7 @@ void Graphic::canvasPaintEvent() {
drawGrid();
p.setRenderHint(QPainter::Antialiasing, aalias);
#ifdef HAS_GL
if (isOGL) {
if (isOGL && !m_fakeGL) {
if (aalias) glEnable(GL_MULTISAMPLE);
else glDisable(GL_MULTISAMPLE);
}
@@ -370,7 +370,7 @@ void Graphic::canvasPaintEvent() {
if (pause_) drawPause();
emit graphicPaintEvent(painter);
p.end();
if (isOGL) return;
if (isOGL && !m_fakeGL) return;
p.begin(canvas);
p.drawImage(0, 0, *buffer);
p.end();
@@ -863,7 +863,7 @@ void Graphic::exportGraphics(QString filename) {
void Graphic::setOpenGL(bool on) {
#ifdef HAS_GL
isOGL = on;
if (on) {
if (on && !m_fakeGL) {
if (!canvas_gl) {
canvas_gl = new UGLWidget();
ui->layoutCanvas->addWidget(canvas_gl);

View File

@@ -44,6 +44,7 @@ namespace Ui {
class UGLWidget;
class GraphicPlugin;
Q_DECLARE_METATYPE(QVector<QPointF>)
@@ -119,6 +120,8 @@ class QAD_GRAPHIC_EXPORT Graphic: public QFrame
Q_PROPERTY(Graphic::GraphicsData graphicsData READ graphicsData WRITE setGraphicsData)
Q_PROPERTY(QByteArray graphicsDataRaw READ graphicsDataRaw WRITE setGraphicsDataRaw)
friend class GraphicPlugin;
public:
Graphic(QWidget * parent = 0);
virtual ~Graphic();
@@ -406,7 +409,7 @@ protected:
double gridx, gridy, history, visible_time, inc_x, grid_numbers_x, grid_numbers_y, LN10;
double eminx, eminy, emaxx, emaxy, pause_phase, gesture_angle;
int lastw, lasth, min_repaint_int, timer_pause, thick;
bool aalias, aupdate, grid, guides, isFit, isOGL, isHover, bufferActive, cancel, pause_, gestures, m_LODOptimization;
bool aalias, aupdate, grid, guides, isFit, isOGL, isHover, bufferActive, cancel, pause_, gestures, m_LODOptimization, m_fakeGL;
bool hasLblX, hasLblY, navigation, only_expand_y, only_expand_x, is_lines_update, leg_update, visible_update, fullscr, need_mouse_pan;
protected slots:

View File

@@ -4,11 +4,12 @@
GraphicPlugin::GraphicPlugin(QObject * parent): QObject(parent) {
m_initialized = false;
m_initialized = m_designer = false;
}
void GraphicPlugin::initialize(QDesignerFormEditorInterface * /* core */) {
m_designer = true;
if (m_initialized)
return;
@@ -24,7 +25,10 @@ bool GraphicPlugin::isInitialized() const {
QWidget * GraphicPlugin::createWidget(QWidget * parent) {
return new Graphic(parent);
auto ret = new Graphic(parent);
if (m_designer)
ret->m_fakeGL = true;
return ret;
}

View File

@@ -29,7 +29,7 @@ public:
void initialize(QDesignerFormEditorInterface * core);
private:
bool m_initialized;
bool m_initialized, m_designer;
};