Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例
一、簡述
我們常見的思維導圖類型XMind軟件,功能十分強大,提供了各式各樣的導圖樣式、形式,那我們可以用Qt實現(xiàn)思維導圖的功能嗎,答案肯定是可以的,用圖說明。
1、靜態(tài)方式
讀取本地數(shù)據的方式進行展示。
2、優(yōu)化
(1)增加選中效果
(2)優(yōu)化連接線條
3、動態(tài)方式
(1)可自由添加/刪除節(jié)點
(2)雙擊可重命名節(jié)點
(3)可折疊節(jié)點
(4)每層節(jié)點顏色可自定義
(5)支持xml格式數(shù)據的保存/讀?。赏卣篂槠渌袷交驍?shù)據庫)
線條繪制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)了初步導圖的基礎功能,后續(xù)會增加更多的樣式選擇及拓展。
到此這篇關于Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例的文章就介紹到這了,更多相關Qt GraphicsView思維導圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++實現(xiàn)將數(shù)據寫入Excel工作表的示例代碼
直觀的界面、出色的計算功能和圖表工具,使Excel成為最流行的個人計算機數(shù)據處理軟件。在本文中,您將學習如何使用?Spire.XLS?for?C++?創(chuàng)建?Excel?文檔,以及如何將數(shù)據寫入?Excel?工作表2023-03-03C語言中的內聯(lián)函數(shù)(inline)與宏定義(#define)詳細解析
內聯(lián)函數(shù)與宏本質上是兩個不同的概念如果程序編寫者對于既要求快速,又要求可讀的情況下,則應該將函數(shù)冠以inline2013-09-09