如何将一个QGraphicsSimpleText标签移动到QChart的某个点的位置
先上效果图
再上代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//固定窗口大小
setFixedSize(800,800);
//初始化图表
initChart();
//向图表添加数据
QLineSeries* line = (QLineSeries*)ui->chartView->chart()->series().at(0);
line->append(0.5,0.5);
line->append(0.8,0.8);
//往chartView中添加一个text
text = new QGraphicsSimpleTextItem();
text->setText("Stupid Label");
QFont font;
font.setPointSize(20);
text->setFont(font);
ui->chartView->scene()->addItem(text);
//绑定UI信号
connect(ui->button,&QPushButton::clicked,this,[=](){
qDebug() << "Go to!";
QPointF pos = ui->chartView->chart()->mapToPosition(QPointF(0.5,0.5));
qDebug() << pos;
text->setPos(pos);
text->setText("Stupid Label\n现在这个该死的标签\n在P(0.5,0.5)的位置");
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initChart()
{
QChart* chart = new QChart();
QLineSeries* line = new QLineSeries();
chart->addSeries(line);
chart->createDefaultAxes();
ui->chartView->setChart(chart);
}
需要注意的是当这个QChartView没有完全初始化好的时候,
QPointF pos = ui->chartView->chart()->mapToPosition(QPointF(0.5,0.5));
这里得到的pos
是错误的!因为这个我卡了好久。