最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例

 更新時間:2022年05月11日 14:17:35   作者:前行中的小豬  
思維導圖可以更方便的整理知識,本文主要介紹了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)了初步導圖的基礎功能,后續(xù)會增加更多的樣式選擇及拓展。

到此這篇關于Qt之使用GraphicsView框架實現(xiàn)思維導圖的示例的文章就介紹到這了,更多相關Qt GraphicsView思維導圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言定義字符串數(shù)組簡單代碼示例

    C語言定義字符串數(shù)組簡單代碼示例

    在C語言中字符串數(shù)組是用來存儲多個字符串的,可以通過字符數(shù)組或指針數(shù)組的方式定義,這篇文章主要介紹了C語言定義字符串數(shù)組的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • OpenCV實現(xiàn)給圖片添加邊框功能

    OpenCV實現(xiàn)給圖片添加邊框功能

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)給圖片添加邊框功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C語言實現(xiàn)三子棋游戲含完整代碼

    C語言實現(xiàn)三子棋游戲含完整代碼

    本文詳細講解了C語言實現(xiàn)三子棋游戲內(nèi)含完整代碼,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 純c語言實現(xiàn)面向對象分析與示例分享

    純c語言實現(xiàn)面向對象分析與示例分享

    采用C語言實現(xiàn)的關鍵是如何運用C語言本身的特性來實現(xiàn)多態(tài)、繼承面、封裝的面向對象的特征,最近給出了例子,大家可以參考使用
    2014-01-01
  • Qt?關于容器的遍歷迭代器的使用問題小結

    Qt?關于容器的遍歷迭代器的使用問題小結

    Qt是一個跨平臺的 C++ 開發(fā)庫,主要用來開發(fā)圖形用戶界面程序,當然也可以開發(fā)不帶界面的命令行程序,本文重點給大家介紹Qt?關于容器的遍歷迭代器的使用問題小結,感興趣的朋友一起看看吧
    2022-03-03
  • 用C語言實現(xiàn)推箱子游戲實例

    用C語言實現(xiàn)推箱子游戲實例

    大家好,本篇文章主要講的是用C語言實現(xiàn)推箱子游戲實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • c語言中回調(diào)函數(shù)的使用以及實際作用詳析

    c語言中回調(diào)函數(shù)的使用以及實際作用詳析

    回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù),如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù),這篇文章主要給大家介紹了關于c語言中回調(diào)函數(shù)的使用以及實際作用的相關資料,需要的朋友可以參考下
    2021-07-07
  • C++條件語句和條件運算符的使用方法講解

    C++條件語句和條件運算符的使用方法講解

    這篇文章主要介紹了C++條件語句和條件運算符的使用方法講解,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C語言深入探究棧的原理

    C語言深入探究棧的原理

    一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數(shù)據(jù)插入和刪除操作的一端 稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守后進先出LIFO(Last In First Out)的原則
    2021-11-11
  • C語言詳細分析貪心策略中最小生成樹的Prime算法設計與實現(xiàn)

    C語言詳細分析貪心策略中最小生成樹的Prime算法設計與實現(xiàn)

    最小生成樹的問題還是比較熱門的,最經(jīng)典的莫過于Prime算法和Kruskal算法了,這篇博文我會詳細講解Prime算法的設計思想與具體代碼的實現(xiàn),不要求數(shù)據(jù)結構學的有多好,只要跟著我的思路來,一步一步的分析,調(diào)試,終能成就自己,那就讓我們開始吧
    2022-05-05

最新評論

大悟县| 潞西市| 宿松县| 长岭县| 商洛市| 孟州市| 沂南县| 新郑市| 霍邱县| 定西市| 长岭县| 龙岩市| 肇庆市| 通海县| 竹山县| 合水县| 鄱阳县| 永城市| 青神县| 苗栗市| 托里县| 工布江达县| 保靖县| 卢氏县| 潮安县| 牙克石市| 安徽省| 稷山县| 旬阳县| 漠河县| 邳州市| 措美县| 周口市| 延津县| 上林县| 乌拉特后旗| 大埔县| 铁岭市| 融水| 西乡县| 阿拉善左旗|