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

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

 更新時(shí)間:2022年05月11日 14:17:35   作者:前行中的小豬  
思維導(dǎo)圖可以更方便的整理知識(shí),本文主要介紹了Qt之使用GraphicsView框架實(shí)現(xiàn)思維導(dǎo)圖的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、簡(jiǎn)述

我們常見的思維導(dǎo)圖類型XMind軟件,功能十分強(qiáng)大,提供了各式各樣的導(dǎo)圖樣式、形式,那我們可以用Qt實(shí)現(xiàn)思維導(dǎo)圖的功能嗎,答案肯定是可以的,用圖說明。

1、靜態(tài)方式

讀取本地?cái)?shù)據(jù)的方式進(jìn)行展示。

在這里插入圖片描述

2、優(yōu)化

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

在這里插入圖片描述

3、動(dòng)態(tài)方式

(1)可自由添加/刪除節(jié)點(diǎn)
(2)雙擊可重命名節(jié)點(diǎn)
(3)可折疊節(jié)點(diǎn)
(4)每層節(jié)點(diǎn)顏色可自定義
(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);
	}
}

目前只實(shí)現(xiàn)了初步導(dǎo)圖的基礎(chǔ)功能,后續(xù)會(huì)增加更多的樣式選擇及拓展。

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

相關(guān)文章

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

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

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

    C++條件語句和條件運(yùn)算符的使用方法講解

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

    C語言深入探究棧的原理

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

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

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

    五指山市| 师宗县| 黄平县| 大田县| 怀仁县| 阿荣旗| 车险| 乌鲁木齐市| 怀来县| 兴城市| 扎赉特旗| 乌拉特后旗| 吉木萨尔县| 馆陶县| 锡林浩特市| 始兴县| 丹江口市| 竹溪县| 满洲里市| 若尔盖县| 龙口市| 绥芬河市| 介休市| 中方县| 延庆县| 登封市| 宁武县| 景德镇市| 巩义市| 甘谷县| 阳新县| 青河县| 莱阳市| 安多县| 霸州市| 苍南县| 礼泉县| 时尚| 陵水| 灵石县| 万荣县|