添加项目文件。
This commit is contained in:
		
							
								
								
									
										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>
 | 
			
		||||
		Reference in New Issue
	
	Block a user