75 lines
2.3 KiB
C++
75 lines
2.3 KiB
C++
#include <QApplication>
|
|
#include <QPushButton>
|
|
#include <QMainWindow>
|
|
#include <QSplitter>
|
|
#include <QQuickWidget>
|
|
#include <QQmlContext>
|
|
#include <QQuickWindow>
|
|
#include <QSGRendererInterface>
|
|
#include <QTimer>
|
|
#include <QRandomGenerator>
|
|
|
|
#include "backend.h"
|
|
#include "backend.h"
|
|
#include "glwidget.h"
|
|
|
|
int main(int argc, char *argv[]) {
|
|
QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
|
|
// 统一OpenGL格式
|
|
QSurfaceFormat fmt;
|
|
fmt.setVersion(3, 3);
|
|
fmt.setProfile(QSurfaceFormat::CoreProfile);
|
|
fmt.setDepthBufferSize(24);
|
|
fmt.setStencilBufferSize(8);
|
|
fmt.setSamples(4);
|
|
fmt.setSwapInterval(1);
|
|
QSurfaceFormat::setDefaultFormat(fmt);
|
|
|
|
QApplication a(argc, argv);
|
|
|
|
auto *win = new QMainWindow;
|
|
auto *splitter = new QSplitter;
|
|
splitter->setOrientation(Qt::Horizontal);
|
|
auto *quick = new QQuickWidget;
|
|
quick->setResizeMode(QQuickWidget::SizeRootObjectToView);
|
|
|
|
Backend backend;
|
|
quick->rootContext()->setContextProperty("backend", &backend);
|
|
quick->setSource(QUrl("qrc:/qml/Main.qml"));
|
|
|
|
auto *glw = new GLWidget;
|
|
glw->setSpec(8, 11, 0.1f, 0.03f);
|
|
glw->setPanelThickness(0.08f);
|
|
glw->setRange(backend.minValue(), backend.maxValue());
|
|
glw->setRenderModeString(backend.renderMode());
|
|
glw->setLabelModeString(backend.labelMode());
|
|
|
|
QObject::connect(&backend, &Backend::rangeChanged, glw, &GLWidget::setRange);
|
|
QObject::connect(&backend, &Backend::renderModeValueChanged, glw, &GLWidget::setRenderModeString);
|
|
QObject::connect(&backend, &Backend::labelModeValueChanged, glw, &GLWidget::setLabelModeString);
|
|
|
|
auto *t = new QTimer(win);
|
|
t->setTimerType(Qt::PreciseTimer);
|
|
t->setInterval(10);
|
|
QObject::connect(t, &QTimer::timeout, glw, [glw] {
|
|
const int n = glw->dotCount();
|
|
QVector<float> v;
|
|
v.resize(n);
|
|
for (int i = 0; i < n; ++i) {
|
|
// TODO: value
|
|
v[i] = 100.0f + float(QRandomGenerator::global()->generateDouble()) * (2000.0f - 100.0f);
|
|
}
|
|
glw->submitValues(v);
|
|
});
|
|
|
|
splitter->addWidget(quick);
|
|
splitter->addWidget(glw);
|
|
splitter->setStretchFactor(0, 0);
|
|
splitter->setStretchFactor(1, 1);
|
|
win->setCentralWidget(splitter);
|
|
win->resize(1100, 650);
|
|
win->show();
|
|
t->start();
|
|
return QApplication::exec();
|
|
}
|