Я хочу предотвратить масштабирование QChartView до отрицательных значений оси x или y. Итак, я пытаюсь перехватить mouseReleaseEvent в моем подклассе QChartView, а затем изменить координаты RubberBandRect перед выполнением масштабирования. Но кажется, что координаты RubberBandRect всегда равны нулю после отпускания мыши, поэтому я думаю, что я не работаю с правильным RubberBandRect.
Я пытаюсь адаптироваться на основе документации для QChartView (выделено мной):
недействительным QChartView::mouseReleaseEvent(QMouseEvent *event)
Если левая кнопка мыши отпущена, а резинка включена, событие event принимается, и изображение масштабируется до прямоугольника, обозначенного резинкой.
Когда я попытался посмотреть на фактические значения в RubberBandRect в приведенном ниже фрагменте кода, значения x/y и высоты/ширины прямоугольника всегда равны нулю, независимо от того, как я увеличивал масштаб с помощью курсора.
Я также посмотрел ответ на этот вопрос: Qt Как подключить сигнал RubberBandChanged но в этом случае они хотели поведения в главном окне, чего я не хочу. Спасибо!
class MyQChartView : public QtCharts::QChartView
{
Q_OBJECT
public:
MyQChartView(QWidget *parent = 0);
//...
protected:
void mouseReleaseEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
};
void MyQChartView::mouseReleaseEvent(QMouseEvent *event)
{
//always shows zeroes for the x and y position
if(event->button() == Qt::LeftButton){
std::cout << "x: " << this->rubberBandRect().x() << " y: " << this->rubberBandRect().y() << std::endl;
QChartView::mouseReleaseEvent(event);
}
//any other event
QChartView::mouseReleaseEvent(event);
}
rubberBand()
? Вы установили это значение с помощьюsetRubberBand
на что-то, отличное отNoRubberBand
? - person Maxim Skvortsov   schedule 19.09.2020