Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例
一、簡述
我們常見的思維導圖類型XMind軟件,功能十分強大,提供了各式各樣的導圖樣式、形式,那我們可以用Qt實現(xiàn)思維導圖的功能嗎,答案肯定是可以的,用圖說明。
1、靜態(tài)方式
讀取本地數(shù)據(jù)的方式進行展示。

2、優(yōu)化
(1)增加選中效果
(2)優(yōu)化連接線條

3、動態(tài)方式
(1)可自由添加/刪除節(jié)點
(2)雙擊可重命名節(jié)點
(3)可折疊節(jié)點
(4)每層節(jié)點顏色可自定義
(5)支持xml格式數(shù)據(jù)的保存/讀?。赏卣篂槠渌袷交驍?shù)據(jù)庫)


線條繪制Code
void LineTest::paintEvent(QPaintEvent *event)
{
QPoint startPoint = m_startPoint;
QPoint endPoint = m_endPoint;
int hSpace = 15;
int radius = 8;
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::gray, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
// 判斷是上弧線還是下弧線;
if (endPoint.y() < startPoint.y())
{
// 繪制橫線;
painter.drawLine(startPoint, startPoint + QPoint(hSpace, 0));
// 繪制豎線;
startPoint += QPoint(hSpace, 0);
QPoint vTopPoint = QPoint(startPoint.x(), endPoint.y() + radius);
painter.drawLine(startPoint, vTopPoint);
// 繪制上弧線;
startPoint = vTopPoint;
QPoint hTopPoint = QPoint(startPoint.x() + radius, endPoint.y());
QPainterPath path(startPoint);
// 繪制貝塞爾三次曲線;
QPointF c1 = QPointF(startPoint.x(), hTopPoint.y());
QPointF c2 = QPointF(startPoint.x() + 2, hTopPoint.y() + 2);
path.cubicTo(c2, c2, hTopPoint);
painter.drawPath(path);
// 繪制橫線;
startPoint = hTopPoint;
painter.drawLine(startPoint, endPoint);
}
else if (endPoint.y() > startPoint.y())
{
// 繪制橫線;
painter.drawLine(startPoint, startPoint + QPoint(hSpace, 0));
// 繪制豎線;
startPoint += QPoint(hSpace, 0);
QPoint vBottomPoint = QPoint(startPoint.x(), endPoint.y() - radius);
painter.drawLine(startPoint, vBottomPoint);
// 繪制下弧線;
startPoint = vBottomPoint;
QPoint hBottomPoint = QPoint(startPoint.x() + radius, endPoint.y());
QPainterPath path(startPoint);
// 繪制貝塞爾三次曲線;
QPointF c1 = QPointF(startPoint.x() + 2, hBottomPoint.y() - 2);
QPointF c2 = QPointF(startPoint.x() + 2, hBottomPoint.y() + 2);
path.cubicTo(c1, c1, hBottomPoint);
painter.drawPath(path);
// 繪制橫線;
startPoint = hBottomPoint;
painter.drawLine(startPoint, endPoint);
}
else
{
// 繪制直線;
painter.drawLine(startPoint, endPoint);
}
}
目前只實現(xiàn)了初步導圖的基礎(chǔ)功能,后續(xù)會增加更多的樣式選擇及拓展。
到此這篇關(guān)于Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例的文章就介紹到這了,更多相關(guān)Qt GraphicsView思維導圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié)
Qt是一個跨平臺的 C++ 開發(fā)庫,主要用來開發(fā)圖形用戶界面程序,當然也可以開發(fā)不帶界面的命令行程序,本文重點給大家介紹Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié),感興趣的朋友一起看看吧2022-03-03
c語言中回調(diào)函數(shù)的使用以及實際作用詳析
C語言詳細分析貪心策略中最小生成樹的Prime算法設(shè)計與實現(xiàn)

