Qchart, legend ()-> setGeometry не работает

#c #qt #qchart

#c #qt #qchart

Вопрос:

Я следил за документацией qt https://doc-snapshots.qt.io/qt5-5.11/qtcharts-legend-example.html чтобы отсоединить условные обозначения от диаграммы и задать размеры отсоединенных условных обозначений

 legend->detachFromChart();
m_chart->legend()->setBackgroundVisible(true);
m_chart->legend()->setBrush(QBrush(QColor(128, 128, 128, 128)));
m_chart->legend()->setPen(QPen(QColor(192, 192, 192, 192)));
m_chart->legend()->setGeometry(QRectF(80, 50, 100, 180));
 

m_chart-> legend()->setGeometry(QRectF(80, 50, 100, 180)) не работает.
первые два аргумента работают. Позиция легенды равна (80, 50). Однако последние два аргумента не работают. Ширина легенды не равна 100, а высота легенды не равна 180.

Ответ №1:

Вы должны вызвать update() функцию QLegend после установки геометрии:

 m_chart->legend()->update();
 

Комментарии:

1. я добавил m_chart-> legend()-> update(), но ширина и высота легенды не изменились

Ответ №2:

Обновите легенду после настройки геометрии легенды. m_chart-> legend()->update().

Важное примечание: установите геометрию легенды после добавления lineseries . это сработало для меня. Когда мы устанавливаем свойства legend amp; chart перед добавлением lineseries , это не сработает. Даже в некоторых случаях это приводит к сбою приложения.