QtDataVisualization;三维点的数据传递。

QtDataVisualization;三维点的数据传递。

Q3DScatter 选中事件(信号)

  • Q3DScatter::selectedSeriesChanged(QScatter3DSeries *series)

此事件将选中点所在的series传出,也就是说传递的是被选中的series,而不是单独的点,所以在未丢失series选中状态的情况下,不会触发多次信号。

  • selectedSeries : QScatter3DSeries* const
    This property holds the selected series or null.

QScatter3DSeries 选中事件(信号)

  • QScatter3DSeries::selectedItemChanged(int index)

此事件在选中三维点时将选中点的索引位置传出,当选中其他点时会重新触发该信号。

  • selectedItem : int
    This property holds the item that is selected in the series.

应用实现点击数据点获取数据点坐标等信息

声明一个QScatter3DSeries 指针,用来保存选中的series。

QScatter3DSeries *m_selectedSeries = nullptr;

Q3DScatter::selectedSeriesChanged(QScatter3DSeries *series)的槽函数触发时用m_selectedSeries 保存传递过来的seres。随后在QScatter3DSeries::selectedItemChanged(int index)的槽函数中利用index索引m_selectedSeries 中的被选中点,就可以拿去选中点的数据了。

connect(Q3DScatter对象指针, &Q3DScatter::selectedSeriesChanged, this, &槽函数所在类::on3Dscatter_selected);

connect(QScatter3DSeries对象指针, &QScatter3DSeries::selectedItemChanged, this, &槽函数所在类::on3Dseries_selected);


void 槽函数所在类::on3Dscatter_selected(QScatter3DSeries *series)
{
	if (series == nullptr) {
		return;
	}
	m_selectedSeries = series;
}
void 槽函数所在类::on3Dseries_selected(int index)
{
	if (m_selectedSeries == nullptr) {
		return;
	}
	double x = m_selectedSeries->dataProxy()->array()->at(index).x();
	double y = m_selectedSeries->dataProxy()->array()->at(index).y();
	cout << "Point(" << x << "," << y << ")" << endl;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QtDataVisualizationQt中的一个模块,用于可视化数据,包括3D图形和2D图形。其中,三维图是其中的一种类型,可以用于展示三维数据中的散分布情况。 使用QtDataVisualization绘制三维图的步骤如下: 1. 创建一个Q3DScatter对象,用于展示三维图。 2. 创建一个QScatterDataArray对象,用于存储散数据。 3. 将散数据添加到QScatterDataArray对象中。 4. 创建一个QScatterDataProxy对象,用于将散数据与Q3DScatter对象关联。 5. 设置Q3DScatter对象的坐标轴范围、主题、标题等属性。 6. 将Q3DScatter对象添加到QWidget中进行展示。 下面是一个简单的示例代码,用于展示如何使用QtDataVisualization绘制三维图: ``` #include <QtWidgets/QApplication> #include <QtDataVisualization/Q3DScatter> #include <QtDataVisualization/QScatterDataProxy> #include <QtDataVisualization/QScatterDataArray> using namespace QtDataVisualization; int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建一个Q3DScatter对象 Q3DScatter *scatter = new Q3DScatter(); // 创建一个QScatterDataArray对象 QScatterDataArray dataArray; // 添加散数据到QScatterDataArray对象中 for (float x = -10.0f; x <= 10.0f; x += 0.5f) { for (float y = -10.0f; y <= 10.0f; y += 0.5f) { for (float z = -10.0f; z <= 10.0f; z += 0.5f) { dataArray << QVector3D(x, y, z); } } } // 创建一个QScatterDataProxy对象,并将散数据与Q3DScatter对象关联 QScatterDataProxy *proxy = new QScatterDataProxy(); proxy->addItems(dataArray); scatter->addSeries(proxy); // 设置Q3DScatter对象的坐标轴范围、主题、标题等属性 scatter->activeTheme()->setType(Q3DTheme::ThemeEbony); scatter->axisX()->setTitle("X Axis Title"); scatter->axisY()->setTitle("Y Axis Title"); scatter->axisZ()->setTitle("Z Axis Title"); // 将Q3DScatter对象添加到QWidget中进行展示 QWidget *container = QWidget::createWindowContainer(scatter); container->setMinimumSize(800, 600); container->setWindowTitle("QtDataVisualization - 3D Scatter"); container->show(); return a.exec(); } ``` 运行该示例代码,可以得到一个包含了大量散三维图,如下图所示: ![QtDataVisualization - 3D Scatter](https://blog.csdn.net/qq_41453285/article/details/107261516)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值