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

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

 更新時間:2022年05月11日 14:17:35   作者:前行中的小豬  
思維導圖可以更方便的整理知識,本文主要介紹了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++的復雜性

    簡述C++的復雜性

    這篇文章主要介紹了簡述C++的復雜性,幫助大家更好的理解和認識c++編程語言,感興趣的朋友可以了解下
    2020-08-08
  • C語言實現(xiàn)解析csv格式文件的示例代碼

    C語言實現(xiàn)解析csv格式文件的示例代碼

    CSV,有時也稱為字符分隔值,其文件以純文本形式存儲表格數(shù)據(數(shù)字和文本),本文為大家整理了C語言解析csv文件的方法,需要的可以參考一下
    2023-06-06
  • C++ push方法與push_back方法常見方法介紹

    C++ push方法與push_back方法常見方法介紹

    push與push_back是STL中常見的方法,都是向數(shù)據結構中添加元素,本文還將簡述push對應的stack與queue系列,常見方法的介紹,以及與push_back相對應的vector系列常見方法介紹,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • C語言中棧的兩種實現(xiàn)方法

    C語言中棧的兩種實現(xiàn)方法

    棧的實現(xiàn)方式有兩種,一種方法是使用指針,而另一種方法則是使用數(shù)組,這篇文章主要介紹了C語言中棧的兩種實現(xiàn)方法,需要的朋友可以參考下
    2021-08-08
  • C語言指針原來也可以這樣了解

    C語言指針原來也可以這樣了解

    這篇文章非常詳細的講解了C語言中指針的概念,包含多種方法,多種定義,全面的說明了C語言的特性,希望能給你帶來幫助
    2021-08-08
  • C++中最常用的容器用法與排序實例

    C++中最常用的容器用法與排序實例

    C++ 中容器被定義為:在數(shù)據存儲上,有一種對象類型,它可以持有其它對象或指向其它對像的指針,這種對象類型就叫做容器,這篇文章主要給大家介紹了關于C++中最常用的容器用法與排序的相關資料,需要的朋友可以參考下
    2021-08-08
  • C++實現(xiàn)將數(shù)據寫入Excel工作表的示例代碼

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

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

    關于C++動態(tài)分配內存的介紹

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

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

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

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

    這篇文章主要給大家介紹了關于c++中stack、queue和vector基本操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08

最新評論