提交 1fe187f6 编写于 作者: D dev 提交者: dev

加入实时鼠标位置和连线功能,更加便利了。

上级 b2805694
......@@ -56,6 +56,7 @@ set(PRJ_HEADERS_GUI
gui/taskmodule.h
gui/tgraphicstaskitem.h
gui/dlgabout.h
gui/tbscene.h
)
set(PRJ_SOURCES_CORE
core/tasknode.cpp
......@@ -74,6 +75,7 @@ set(PRJ_SOURCES_GUI
gui/taskmodule.cpp
gui/tgraphicstaskitem.cpp
gui/custom_item_editor.cpp
gui/tbscene.cpp
)
set(PRJ_FORMS
gui/taskbusplatformfrm.ui
......
#include "pdesignerview.h"
#include "pdesignerview.h"
#include "ui_pdesignerview.h"
#include <QDragEnterEvent>
#include <QMimeData>
......@@ -8,7 +8,6 @@
#include <QMdiSubWindow>
#include <QDataStream>
#include <QClipboard>
#include <QGraphicsScene>
#include <QGraphicsLineItem>
#include <QMessageBox>
#include <QJsonObject>
......@@ -21,13 +20,13 @@
#include "tb_interface.h"
#include "core/process_prctl.h"
#include "watchdog/profile_log.h"
#include "tbscene.h"
int PDesignerView::m_nextCV = 1;
PDesignerView::PDesignerView(taskBusPlatformFrm * pMainfrm,QWidget *parent) :
QWidget(parent),
ui(new Ui::PDesignerView),
m_scene(new QGraphicsScene(0,0,4096,3072,this)),
m_scene(new TBScene(0,0,4096,3072,this)),
m_project(new taskProject(0)),
m_pRunThread(new QThread(this)),
m_pMainFrm(pMainfrm)
......@@ -75,7 +74,6 @@ PDesignerView::PDesignerView(taskBusPlatformFrm * pMainfrm,QWidget *parent) :
}
{
QToolBar * bar = new QToolBar(tr("Designer"),this) ;
bar->addAction(ui->actionConnectLine); addAction(ui->actionConnectLine);
bar->addAction(ui->actionDeleteLine); addAction(ui->actionDeleteLine);
bar->addAction(ui->actionPinUp); addAction(ui->actionPinUp);
bar->addAction(ui->actionPinDown); addAction(ui->actionPinDown);
......@@ -576,7 +574,8 @@ void PDesignerView::on_actionCut_triggered()
}
}
void PDesignerView::on_actionConnectLine_triggered()
void PDesignerView::connectPins()
{
int gIns = 0;
foreach (TGraphicsTaskItem::pin_info p, TGraphicsTaskItem::m_pinList)
......@@ -614,8 +613,6 @@ void PDesignerView::on_actionConnectLine_triggered()
TGraphicsTaskItem::m_pinList.clear();
m_project->refresh_idxes();
ui->graphicsView_main->scale(0.5,1);
ui->graphicsView_main->scale(2,1);
appendUndoList();
}
......
/*!
/*!
* PDesignerView provides a modular drag-and-drop interface like Simulink or
* gnu-radio that can be used to implement (quasi-)real-time processing logic
* on a general-purpose computer.
......@@ -18,7 +18,7 @@
#include "core/taskproject.h"
class TGraphicsTaskItem;
class taskNode;
class QGraphicsScene;
class TBScene;
class QGraphicsLineItem;
class taskBusPlatformFrm;
namespace Ui {
......@@ -68,7 +68,7 @@ private:
//进程对应的图形
//Graphics for process corresponding
QVector< TGraphicsTaskItem *> m_vec_gitems;
QGraphicsScene * m_scene;
TBScene * m_scene;
//连线,在update_paths更新
//lines, uodated in void update_paths();
QVector<QGraphicsLineItem *> m_lines;
......@@ -104,7 +104,7 @@ public:
void savedUndoState();
public slots:
void appendUndoList();
void connectPins();
protected:
void set_modified(bool bmod = true);
protected:
......@@ -124,7 +124,6 @@ private slots:
void on_actionCopy_triggered();
void on_actionPaste_triggered();
void on_actionCut_triggered();
void on_actionConnectLine_triggered();
void on_actionDeleteLine_triggered();
void on_actionPinUp_triggered();
void on_actionPinDown_triggered();
......
......@@ -52,9 +52,6 @@
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="renderHints">
<set>QPainter::HighQualityAntialiasing|QPainter::SmoothPixmapTransform|QPainter::TextAntialiasing</set>
</property>
<property name="dragMode">
<enum>QGraphicsView::ScrollHandDrag</enum>
</property>
......@@ -184,21 +181,6 @@
<string>Ctrl+X</string>
</property>
</action>
<action name="actionConnectLine">
<property name="icon">
<iconset resource="../taskbusplatform.qrc">
<normaloff>:/taskBus/images/H. line.png</normaloff>:/taskBus/images/H. line.png</iconset>
</property>
<property name="text">
<string>ConnectLine</string>
</property>
<property name="toolTip">
<string>ConnectLine, Ctrl+L</string>
</property>
<property name="shortcut">
<string>Ctrl+L</string>
</property>
</action>
<action name="actionDeleteLine">
<property name="icon">
<iconset resource="../taskbusplatform.qrc">
......
#include "tbscene.h"
#include "tgraphicstaskitem.h"
#include <QGraphicsSceneMouseEvent>
TBScene::TBScene(QObject *parent)
: QGraphicsScene{parent}
, m_pinLine(new QGraphicsLineItem())
{
addItem(m_pinLine);
m_nTimerID = startTimer(500);
}
TBScene::TBScene(const QRectF &sceneRect, QObject *parent )
:QGraphicsScene(sceneRect,parent)
, m_pinLine(new QGraphicsLineItem())
{
addItem(m_pinLine);
m_nTimerID = startTimer(500);
}
TBScene::TBScene(qreal x, qreal y, qreal width, qreal height, QObject *parent)
:QGraphicsScene(x,y,width,height,parent)
, m_pinLine(new QGraphicsLineItem())
{
addItem(m_pinLine);
m_nTimerID = startTimer(500);
}
void TBScene::mouseMoveEvent(QGraphicsSceneMouseEvent * e)
{
QGraphicsScene::mouseMoveEvent(e);
if (TGraphicsTaskItem::m_pinList.size()==1)
{
m_pinLine->setLine(TGraphicsTaskItem::m_pinPoint.x(),TGraphicsTaskItem::m_pinPoint.y(),
e->lastScenePos().x(),e->lastScenePos().y());
}
}
void TBScene::timerEvent(QTimerEvent * e)
{
static unsigned long long colori = 0;
if (e->timerId()==m_nTimerID)
{
if (TGraphicsTaskItem::m_pinList.size()==1)
{
QPen pen(Qt::DotLine);
pen.setWidth(2);
pen.setColor(QColor(++colori * 49999473677 % 0xffffff));
m_pinLine->setPen(QPen(pen));
}
else if (m_pinLine->line().x1()||m_pinLine->line().x2())
{
m_pinLine->setLine(0,0,0,0);
}
}
}
#ifndef TBSCENE_H
#define TBSCENE_H
#include <QGraphicsScene>
#include <QGraphicsLineItem>
class TBScene : public QGraphicsScene
{
Q_OBJECT
public:
TBScene(QObject *parent = nullptr);
TBScene(const QRectF &sceneRect, QObject *parent = nullptr);
TBScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr);
protected:
void timerEvent(QTimerEvent * e) override;
void mouseMoveEvent(QGraphicsSceneMouseEvent * e) override;
private:
QGraphicsLineItem * m_pinLine = nullptr;
int m_nTimerID = -1;
};
#endif // TBSCENE_H
#include "tgraphicstaskitem.h"
#include "tgraphicstaskitem.h"
#include <QPainter>
#include <QDebug>
#include <QFileInfo>
......@@ -9,6 +9,8 @@
#include "taskmodule.h"
QSet<TGraphicsTaskItem::pin_info> TGraphicsTaskItem::m_pinList;
QPointF TGraphicsTaskItem::m_pinPoint(0,0) ;
TGraphicsTaskItem::TGraphicsTaskItem(PDesignerView * pv,taskModule * pm,QGraphicsItem * para )
:QGraphicsItem(para),
m_pPrjView(pv),
......@@ -105,6 +107,8 @@ void TGraphicsTaskItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
painter->setBrush(brold);
m_insbpos[src] = this->mapToScene(QPointF(-100,cell_height/2 - szz * 32+16+4));
m_icol[src] = linec;
if (m_pinList.contains(info))
m_pinPoint = m_insbpos[src];
QColor ash = QColor(0 , 0, 0);
painter->setPen(ash);
painter->drawLine(-100+8,cell_height/2 - szz * 32+16+4
......@@ -120,6 +124,8 @@ void TGraphicsTaskItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
painter->setBrush(brold);
m_insbpos[src] = this->mapToScene(QPointF(100,cell_height/2 - szz * 32+16+4));
m_icol[src] = linec;
if (m_pinList.contains(info))
m_pinPoint = m_insbpos[src];
QColor ash = QColor(0 , 0, 0);
painter->setPen(ash);
painter->drawLine(100-8,cell_height/2 - szz * 32+16+4
......@@ -160,6 +166,8 @@ void TGraphicsTaskItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
50,8);
painter->setBrush(brold);
m_outsbpos[dst] = this->mapToScene(QPointF(100,cell_height/2 - szz * 32+16+4));
if (m_pinList.contains(info))
m_pinPoint = m_outsbpos[dst];
QColor ash = QColor(0 , 0, 0);
painter->setPen(ash);
painter->drawLine(100-8,cell_height/2 - szz * 32+16
......@@ -174,6 +182,8 @@ void TGraphicsTaskItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
50,8);
painter->setBrush(brold);
m_outsbpos[dst] = this->mapToScene(QPointF(-100,cell_height/2 - szz * 32+16+4));
if (m_pinList.contains(info))
m_pinPoint = m_outsbpos[dst];
QColor ash = QColor(0 , 0, 0);
painter->setPen(ash);
painter->drawLine(-100+8,cell_height/2 - szz * 32+16
......@@ -297,6 +307,10 @@ void TGraphicsTaskItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
m_pinList.clear();
}
else if (m_pinList.size()>1)
{
m_pPrjView->connectPins();
}
}
QGraphicsItem::mousePressEvent(event);
......
......@@ -52,6 +52,7 @@ protected:
QMap<QString,QColor> m_icol;
int cellSize(QMap<QString,int> *mp_SrcPos, QMap<QString,int> *mp_DstPos) const;
public:
static QPointF m_pinPoint;
static QSet<pin_info> m_pinList;
};
......
......@@ -59,7 +59,8 @@ SOURCES += \
core/process_prctl.cpp \
watchdog/tbwatchdog.cpp \
watchdog/watchmemmodule.cpp \
gui/custom_item_editor.cpp
gui/custom_item_editor.cpp \
gui/tbscene.cpp
HEADERS += \
core/tasknode.h \
......@@ -78,8 +79,8 @@ HEADERS += \
../tb_interface/tb_interface.h \
watchdog/profile_log.h \
watchdog/tbwatchdog.h \
watchdog/watchmemmodule.h
watchdog/watchmemmodule.h \
gui/tbscene.h
FORMS += \
gui/taskbusplatformfrm.ui \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册