欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、簡(jiǎn)述

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

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ù)庫(kù))

在這里插入圖片描述

在這里插入圖片描述

線條繪制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++實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)入Excel工作表的示例代碼

    C++實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)入Excel工作表的示例代碼

    直觀的界面、出色的計(jì)算功能和圖表工具,使Excel成為最流行的個(gè)人計(jì)算機(jī)數(shù)據(jù)處理軟件。在本文中,您將學(xué)習(xí)如何使用?Spire.XLS?for?C++?創(chuàng)建?Excel?文檔,以及如何將數(shù)據(jù)寫(xiě)入?Excel?工作表
    2023-03-03
  • 關(guān)于C++動(dòng)態(tài)分配內(nèi)存的介紹

    關(guān)于C++動(dòng)態(tài)分配內(nèi)存的介紹

    今天小編就為大家分享一篇關(guān)于關(guān)于C++動(dòng)態(tài)分配內(nèi)存的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • C語(yǔ)言中的內(nèi)聯(lián)函數(shù)(inline)與宏定義(#define)詳細(xì)解析

    C語(yǔ)言中的內(nèi)聯(lián)函數(shù)(inline)與宏定義(#define)詳細(xì)解析

    內(nèi)聯(lián)函數(shù)與宏本質(zhì)上是兩個(gè)不同的概念如果程序編寫(xiě)者對(duì)于既要求快速,又要求可讀的情況下,則應(yīng)該將函數(shù)冠以inline
    2013-09-09
  • c++中stack、queue和vector的基本操作示例

    c++中stack、queue和vector的基本操作示例

    這篇文章主要給大家介紹了關(guān)于c++中stack、queue和vector基本操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 最新評(píng)論