添加项目文件。
This commit is contained in:
parent
1d2c142e68
commit
a2c503fd15
22
realTimeDataDisplay.sln
Normal file
22
realTimeDataDisplay.sln
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.33027.164
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "realTimeDataDisplay", "realTimeDataDisplay\realTimeDataDisplay.vcxproj", "{84C0F098-0883-4B60-88A7-3F1DE62EF226}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{84C0F098-0883-4B60-88A7-3F1DE62EF226}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{84C0F098-0883-4B60-88A7-3F1DE62EF226}.Release|x64.Build.0 = Release|x64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {103B4E39-2E6B-4BA0-A51B-F09A25BD55D6}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
84
realTimeDataDisplay/AxisTag.cpp
Normal file
84
realTimeDataDisplay/AxisTag.cpp
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#include "axistag.h"
|
||||||
|
|
||||||
|
AxisTag::AxisTag(QCPAxis* parentAxis) :
|
||||||
|
QObject(parentAxis),
|
||||||
|
mAxis(parentAxis)
|
||||||
|
{
|
||||||
|
// The dummy tracer serves here as an invisible anchor which always sticks to the right side of
|
||||||
|
// the axis rect
|
||||||
|
mDummyTracer = new QCPItemTracer(mAxis->parentPlot());
|
||||||
|
mDummyTracer->setVisible(false);
|
||||||
|
mDummyTracer->position->setTypeX(QCPItemPosition::ptAxisRectRatio);
|
||||||
|
mDummyTracer->position->setTypeY(QCPItemPosition::ptPlotCoords);
|
||||||
|
mDummyTracer->position->setAxisRect(mAxis->axisRect());
|
||||||
|
mDummyTracer->position->setAxes(0, mAxis);
|
||||||
|
mDummyTracer->position->setCoords(1, 0);
|
||||||
|
|
||||||
|
// the arrow end (head) is set to move along with the dummy tracer by setting it as its parent
|
||||||
|
// anchor. Its coordinate system (setCoords) is thus pixels, and this is how the needed horizontal
|
||||||
|
// offset for the tag of the second y axis is achieved. This horizontal offset gets dynamically
|
||||||
|
// updated in AxisTag::updatePosition. the arrow "start" is simply set to have the "end" as parent
|
||||||
|
// anchor. It is given a horizontal offset to the right, which results in a 15 pixel long arrow.
|
||||||
|
mArrow = new QCPItemLine(mAxis->parentPlot());
|
||||||
|
mArrow->setLayer("overlay");
|
||||||
|
mArrow->setClipToAxisRect(false);
|
||||||
|
mArrow->setHead(QCPLineEnding::esSpikeArrow);
|
||||||
|
mArrow->end->setParentAnchor(mDummyTracer->position);
|
||||||
|
mArrow->start->setParentAnchor(mArrow->end);
|
||||||
|
mArrow->start->setCoords(15, 0);
|
||||||
|
|
||||||
|
// The text label is anchored at the arrow start (tail) and has its "position" aligned at the
|
||||||
|
// left, and vertically centered to the text label box.
|
||||||
|
mLabel = new QCPItemText(mAxis->parentPlot());
|
||||||
|
mLabel->setLayer("overlay");
|
||||||
|
mLabel->setClipToAxisRect(false);
|
||||||
|
mLabel->setPadding(QMargins(3, 0, 3, 0));
|
||||||
|
mLabel->setBrush(QBrush(Qt::white));
|
||||||
|
mLabel->setPen(QPen(Qt::blue));
|
||||||
|
mLabel->setPositionAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||||
|
mLabel->position->setParentAnchor(mArrow->start);
|
||||||
|
}
|
||||||
|
|
||||||
|
AxisTag::~AxisTag()
|
||||||
|
{
|
||||||
|
if (mDummyTracer)
|
||||||
|
mDummyTracer->parentPlot()->removeItem(mDummyTracer);
|
||||||
|
if (mArrow)
|
||||||
|
mArrow->parentPlot()->removeItem(mArrow);
|
||||||
|
if (mLabel)
|
||||||
|
mLabel->parentPlot()->removeItem(mLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AxisTag::setPen(const QPen& pen)
|
||||||
|
{
|
||||||
|
mArrow->setPen(pen);
|
||||||
|
mLabel->setPen(pen);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AxisTag::setBrush(const QBrush& brush)
|
||||||
|
{
|
||||||
|
mLabel->setBrush(brush);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AxisTag::setText(const QString& text)
|
||||||
|
{
|
||||||
|
mLabel->setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AxisTag::updatePosition(double value)
|
||||||
|
{
|
||||||
|
// since both the arrow and the text label are chained to the dummy tracer (via anchor
|
||||||
|
// parent-child relationships) it is sufficient to update the dummy tracer coordinates. The
|
||||||
|
// Horizontal coordinate type was set to ptAxisRectRatio so to keep it aligned at the right side
|
||||||
|
// of the axis rect, it is always kept at 1. The vertical coordinate type was set to
|
||||||
|
// ptPlotCoordinates of the passed parent axis, so the vertical coordinate is set to the new
|
||||||
|
// value.
|
||||||
|
mDummyTracer->position->setCoords(1, value);
|
||||||
|
|
||||||
|
// We want the arrow head to be at the same horizontal position as the axis backbone, even if
|
||||||
|
// the axis has a certain offset from the axis rect border (like the added second y axis). Thus we
|
||||||
|
// set the horizontal pixel position of the arrow end (head) to the axis offset (the pixel
|
||||||
|
// distance to the axis rect border). This works because the parent anchor of the arrow end is
|
||||||
|
// the dummy tracer, which, as described earlier, is tied to the right axis rect border.
|
||||||
|
mArrow->end->setCoords(mAxis->offset(), 0);
|
||||||
|
}
|
31
realTimeDataDisplay/AxisTag.h
Normal file
31
realTimeDataDisplay/AxisTag.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include "qcustomplot.h"
|
||||||
|
|
||||||
|
class AxisTag : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AxisTag(QCPAxis* parentAxis);
|
||||||
|
virtual ~AxisTag();
|
||||||
|
|
||||||
|
// setters:
|
||||||
|
void setPen(const QPen& pen);
|
||||||
|
void setBrush(const QBrush& brush);
|
||||||
|
void setText(const QString& text);
|
||||||
|
|
||||||
|
// getters:
|
||||||
|
QPen pen() const { return mLabel->pen(); }
|
||||||
|
QBrush brush() const { return mLabel->brush(); }
|
||||||
|
QString text() const { return mLabel->text(); }
|
||||||
|
|
||||||
|
// other methods:
|
||||||
|
void updatePosition(double value);
|
||||||
|
protected:
|
||||||
|
QCPAxis* mAxis;
|
||||||
|
QPointer<QCPItemTracer> mDummyTracer;
|
||||||
|
QPointer<QCPItemLine> mArrow;
|
||||||
|
QPointer<QCPItemText> mLabel;
|
||||||
|
};
|
10
realTimeDataDisplay/main.cpp
Normal file
10
realTimeDataDisplay/main.cpp
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include "realTimeDataDisplay.h"
|
||||||
|
#include <QtWidgets/QApplication>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
realTimeDataDisplay w;
|
||||||
|
w.show();
|
||||||
|
return a.exec();
|
||||||
|
}
|
35496
realTimeDataDisplay/qcustomplot.cpp
Normal file
35496
realTimeDataDisplay/qcustomplot.cpp
Normal file
File diff suppressed because it is too large
Load Diff
7737
realTimeDataDisplay/qcustomplot.h
Normal file
7737
realTimeDataDisplay/qcustomplot.h
Normal file
File diff suppressed because it is too large
Load Diff
137
realTimeDataDisplay/realTimeDataDisplay.cpp
Normal file
137
realTimeDataDisplay/realTimeDataDisplay.cpp
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
#include "realTimeDataDisplay.h"
|
||||||
|
|
||||||
|
realTimeDataDisplay::realTimeDataDisplay(QWidget* parent)
|
||||||
|
: QMainWindow(parent)
|
||||||
|
{
|
||||||
|
ui.setupUi(this);
|
||||||
|
|
||||||
|
mPlot = new QCustomPlot(this);
|
||||||
|
setCentralWidget(mPlot);
|
||||||
|
|
||||||
|
//mPlot->yAxis->setTickLabels(false);
|
||||||
|
mPlot->axisRect()->axis(QCPAxis::atRight, 0)->setPadding(54);
|
||||||
|
|
||||||
|
mGraph1 = mPlot->addGraph(mPlot->xAxis, mPlot->axisRect()->axis(QCPAxis::atRight, 0));
|
||||||
|
|
||||||
|
QColor color1(100, 140, 180);
|
||||||
|
QPen pen;
|
||||||
|
pen.setStyle(Qt::PenStyle::SolidLine);
|
||||||
|
pen.setColor(color1);
|
||||||
|
mGraph1->setPen(pen);
|
||||||
|
color1.setAlpha(100);
|
||||||
|
mPlot->graph(0)->setBrush(QBrush(color1));
|
||||||
|
mPlot->graph(0)->setName("sin(t)+sin(t/0.38)");
|
||||||
|
|
||||||
|
mGraph2 = mPlot->addGraph(mPlot->xAxis, mPlot->axisRect()->axis(QCPAxis::atRight, 0));
|
||||||
|
QColor color2(166, 77, 157);
|
||||||
|
pen.setStyle(Qt::PenStyle::SolidLine);
|
||||||
|
pen.setColor(color2);
|
||||||
|
mGraph2->setPen(pen);
|
||||||
|
color2.setAlpha(100);
|
||||||
|
mPlot->graph(1)->setBrush(QBrush(color2));
|
||||||
|
mPlot->graph(1)->setName("sin(t)");
|
||||||
|
|
||||||
|
QSharedPointer<QCPAxisTickerTime> timeTicker(new QCPAxisTickerTime);
|
||||||
|
timeTicker->setTimeFormat("%h:%m:%s");
|
||||||
|
mPlot->xAxis->setTicker(timeTicker);
|
||||||
|
mPlot->xAxis->setRange(0, 16);
|
||||||
|
mPlot->yAxis->setRange(-2.2, 2.2);
|
||||||
|
mPlot->xAxis->setLabel("time");
|
||||||
|
mPlot->yAxis->setLabel("value");
|
||||||
|
mPlot->plotLayout()->insertRow(0);
|
||||||
|
QCPTextElement* title = new QCPTextElement(mPlot, "Realtime Data Display");
|
||||||
|
mPlot->plotLayout()->addElement(0, 0, title);
|
||||||
|
|
||||||
|
connect(mPlot, &QCustomPlot::mousePress, this, [=] { xAxisAutoChange = false; });
|
||||||
|
connect(mPlot, &QCustomPlot::mouseRelease, this, [=] { xAxisAutoChange = true; });
|
||||||
|
|
||||||
|
mPlot->setInteractions(QCP::iRangeDrag);
|
||||||
|
QList<QCPAxis*>list;
|
||||||
|
list.append(mPlot->xAxis);
|
||||||
|
mPlot->axisRect()->setRangeDragAxes(list);
|
||||||
|
mPlot->axisRect()->setupFullAxesBox();
|
||||||
|
|
||||||
|
mTimerThread = new QThread(this);
|
||||||
|
mDataTimer = new QTimer();
|
||||||
|
connect(mDataTimer, SIGNAL(timeout()), this, SLOT(timerSlot()), Qt::DirectConnection);
|
||||||
|
connect(mTimerThread, &QThread::finished, mDataTimer, &QObject::deleteLater);
|
||||||
|
connect(mTimerThread, &QThread::finished, mTimerThread, &QObject::deleteLater);
|
||||||
|
connect(this, &realTimeDataDisplay::updateUICustomPlot, this, &realTimeDataDisplay::onUpdateUICustomPlot);
|
||||||
|
mTimerThread->start();
|
||||||
|
mDataTimer->start(16);
|
||||||
|
mDataTimer->moveToThread(mTimerThread);
|
||||||
|
qDebug() << "this Thread:" << QThread::currentThreadId() << QThread::currentThread();
|
||||||
|
|
||||||
|
mTag1 = new AxisTag(mGraph1->valueAxis());
|
||||||
|
mTag1->setPen(mGraph1->pen());
|
||||||
|
mTag2 = new AxisTag(mGraph2->valueAxis());
|
||||||
|
mTag2->setPen(mGraph2->pen());
|
||||||
|
|
||||||
|
mPlot->legend->setVisible(true);
|
||||||
|
mPlot->legend->setBrush(QColor(255, 255, 255, 150));
|
||||||
|
}
|
||||||
|
|
||||||
|
realTimeDataDisplay::~realTimeDataDisplay()
|
||||||
|
{
|
||||||
|
if (mDataTimer)
|
||||||
|
{
|
||||||
|
mTimerThread->quit();
|
||||||
|
mTimerThread->wait();
|
||||||
|
//connect: &QObject::deleteLater,不需要delete
|
||||||
|
mTimerThread = nullptr;
|
||||||
|
mDataTimer = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void realTimeDataDisplay::onUpdateUICustomPlot(double key, double v1, double v2)
|
||||||
|
{
|
||||||
|
if (xAxisAutoChange)
|
||||||
|
mPlot->xAxis->setRange(key, 16, Qt::AlignRight);
|
||||||
|
|
||||||
|
mTag1->updatePosition(v1);
|
||||||
|
mTag2->updatePosition(v2);
|
||||||
|
if (v1 > 0)
|
||||||
|
mTag1->setText("+" + QString::number(v1, 'f', 2));
|
||||||
|
else
|
||||||
|
mTag1->setText(QString::number(v1, 'f', 2));
|
||||||
|
if (v2 > 0)
|
||||||
|
mTag2->setText("+" + QString::number(v2, 'f', 2));
|
||||||
|
else
|
||||||
|
mTag2->setText(QString::number(v2, 'f', 2));
|
||||||
|
mPlot->replot();
|
||||||
|
}
|
||||||
|
|
||||||
|
void realTimeDataDisplay::timerSlot()
|
||||||
|
{
|
||||||
|
//qDebug() << "timerSlot Thread:" << QThread::currentThreadId() << QThread::currentThread();
|
||||||
|
|
||||||
|
static QTime timeStart = QTime::currentTime();
|
||||||
|
double key = timeStart.msecsTo(QTime::currentTime()) / 1000.0;
|
||||||
|
static double lastFpsKey;
|
||||||
|
static int frameCount;
|
||||||
|
++frameCount;
|
||||||
|
if (key - lastFpsKey > 2) // average fps over 2 seconds
|
||||||
|
{
|
||||||
|
ui.statusBar->showMessage(QString("%1 FPS").arg(frameCount / (key - lastFpsKey), 0, 'f', 0), 0);
|
||||||
|
lastFpsKey = key;
|
||||||
|
frameCount = 0;
|
||||||
|
}
|
||||||
|
mPlot->graph(0)->addData(key, qSin(key) + qSin(key / 0.3843));
|
||||||
|
mPlot->graph(1)->addData(key, qSin(key));
|
||||||
|
|
||||||
|
double graph1Value = mGraph1->dataMainValue(mGraph1->dataCount() - 1);
|
||||||
|
double graph2Value = mGraph2->dataMainValue(mGraph2->dataCount() - 1);
|
||||||
|
|
||||||
|
emit updateUICustomPlot(key, graph1Value, graph2Value);
|
||||||
|
//mTag1->updatePosition(graph1Value);
|
||||||
|
//mTag2->updatePosition(graph2Value);
|
||||||
|
//if (graph1Value > 0)
|
||||||
|
// mTag1->setText("+" + QString::number(graph1Value, 'f', 2));
|
||||||
|
//else
|
||||||
|
// mTag1->setText(QString::number(graph1Value, 'f', 2));
|
||||||
|
//if (graph2Value > 0)
|
||||||
|
// mTag2->setText("+" + QString::number(graph2Value, 'f', 2));
|
||||||
|
//else
|
||||||
|
// mTag2->setText(QString::number(graph2Value, 'f', 2));
|
||||||
|
//mPlot->replot();
|
||||||
|
}
|
39
realTimeDataDisplay/realTimeDataDisplay.h
Normal file
39
realTimeDataDisplay/realTimeDataDisplay.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtWidgets/QMainWindow>
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QThread>
|
||||||
|
#include "ui_realTimeDataDisplay.h"
|
||||||
|
#include "qcustomplot.h"
|
||||||
|
#include "AxisTag.h"
|
||||||
|
|
||||||
|
class realTimeDataDisplay : public QMainWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
realTimeDataDisplay(QWidget* parent = nullptr);
|
||||||
|
~realTimeDataDisplay();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void updateUICustomPlot(double key, double v1, double v2);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void timerSlot();
|
||||||
|
void onUpdateUICustomPlot(double key, double v1, double v2);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::realTimeDataDisplayClass ui;
|
||||||
|
QCustomPlot* mPlot = nullptr;
|
||||||
|
QTimer* mDataTimer = nullptr;
|
||||||
|
QThread* mTimerThread = nullptr;
|
||||||
|
|
||||||
|
QPointer<QCPGraph> mGraph1;
|
||||||
|
QPointer<QCPGraph> mGraph2;
|
||||||
|
QSharedPointer<QCPAxisTickerText> textTicker;
|
||||||
|
|
||||||
|
AxisTag* mTag1;
|
||||||
|
AxisTag* mTag2;
|
||||||
|
|
||||||
|
bool xAxisAutoChange = true;
|
||||||
|
};
|
4
realTimeDataDisplay/realTimeDataDisplay.qrc
Normal file
4
realTimeDataDisplay/realTimeDataDisplay.qrc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="realTimeDataDisplay">
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
24
realTimeDataDisplay/realTimeDataDisplay.ui
Normal file
24
realTimeDataDisplay/realTimeDataDisplay.ui
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>realTimeDataDisplayClass</class>
|
||||||
|
<widget class="QMainWindow" name="realTimeDataDisplayClass">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>840</width>
|
||||||
|
<height>400</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>realTimeDataDisplay</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralWidget"/>
|
||||||
|
<widget class="QStatusBar" name="statusBar"/>
|
||||||
|
</widget>
|
||||||
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
|
<resources>
|
||||||
|
<include location="realTimeDataDisplay.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
76
realTimeDataDisplay/realTimeDataDisplay.vcxproj
Normal file
76
realTimeDataDisplay/realTimeDataDisplay.vcxproj
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{84C0F098-0883-4B60-88A7-3F1DE62EF226}</ProjectGuid>
|
||||||
|
<Keyword>QtVS_v304</Keyword>
|
||||||
|
<WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">10.0.22000.0</WindowsTargetPlatformVersion>
|
||||||
|
<QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
|
||||||
|
<Import Project="$(QtMsBuild)\qt_defaults.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
|
||||||
|
<QtInstall>Qt5.11.2</QtInstall>
|
||||||
|
<QtModules>core;gui;widgets;printsupport</QtModules>
|
||||||
|
<QtBuildConfig>release</QtBuildConfig>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
|
||||||
|
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
|
||||||
|
</Target>
|
||||||
|
<ImportGroup Label="ExtensionSettings" />
|
||||||
|
<ImportGroup Label="Shared" />
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="$(QtMsBuild)\Qt.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration">
|
||||||
|
<ClCompile>
|
||||||
|
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtRcc Include="realTimeDataDisplay.qrc" />
|
||||||
|
<QtUic Include="realTimeDataDisplay.ui" />
|
||||||
|
<QtMoc Include="realTimeDataDisplay.h" />
|
||||||
|
<ClCompile Include="AxisTag.cpp" />
|
||||||
|
<ClCompile Include="qcustomplot.cpp" />
|
||||||
|
<ClCompile Include="realTimeDataDisplay.cpp" />
|
||||||
|
<ClCompile Include="main.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtMoc Include="qcustomplot.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtMoc Include="AxisTag.h" />
|
||||||
|
<ClInclude Include="x64\Release\uic\ui_realTimeDataDisplay.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
||||||
|
<Import Project="$(QtMsBuild)\qt.targets" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
63
realTimeDataDisplay/realTimeDataDisplay.vcxproj.filters
Normal file
63
realTimeDataDisplay/realTimeDataDisplay.vcxproj.filters
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Form Files">
|
||||||
|
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
|
||||||
|
<Extensions>ui</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Translation Files">
|
||||||
|
<UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
|
||||||
|
<Extensions>ts</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtRcc Include="realTimeDataDisplay.qrc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtRcc>
|
||||||
|
<QtUic Include="realTimeDataDisplay.ui">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</QtUic>
|
||||||
|
<QtMoc Include="realTimeDataDisplay.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClCompile Include="realTimeDataDisplay.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="qcustomplot.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="AxisTag.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtMoc Include="qcustomplot.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="AxisTag.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="x64\Release\uic\ui_realTimeDataDisplay.h">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user