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

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

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