first commit
This commit is contained in:
74
main.cpp
Normal file
74
main.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
#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();
|
||||
}
|
||||
Reference in New Issue
Block a user