2014-11-18 2 views
0

Вкратце:Access QCustomPlot Переменная

Мне нужно получить доступ к переменной QCustomPlot в WidgetClass. Но я не могу, потому что в этом контексте он является частным. Как это достигается?

То, что я сделал:

У меня есть класс, который создает граф и класс виджета, который вызывает класс графа Моя переменная QCustomPlot является частной переменной, которая объявляется в классе графов, но Мне нужно получить доступ к этой переменной в классе Widget.

У меня есть слот generate_graphs, который получает данные и передает данные в класс графа, и оттуда создается граф. Я сохраняю в png, поэтому мне нужно получить доступ к переменной графа с этими данными, переменная передается в WidgetClass, которая затем вызывает класс графа, который генерирует граф.

Переменный граф класса (в классе виджета) объявляются следующим образом: GraphWidget* graph Я пытаюсь получить доступ к переменной QCustomPlot в этом слоте, как это: graph->QCustomPlot->savePNG() я получаю сообщение об ошибке, что говорит QCustomPlot* GraphWidget::QCustomPlot is private within this context

Я тогда создала функцию, чтобы просто вернуть GraphWidget* graph, чтобы я мог получить доступ к этой переменной в классе графа. Вместо этого я мог получить доступ к переменной QCustomPlot, не будучи приватной в этом контексте. Это вызвало ошибки, поскольку необходимо передать GraphWidget* graph, который не объявлен в классе GraphWidget.

+1

Поскольку вы являетесь частным, вы можете либо использовать его внутри экземпляра 'graph', либо выставлять его вне экземпляра' graph'. Следуя первому подходу, вы можете определить публичный 'savePng()' внутри вашего 'GraphWidget' и вызвать из этого кода' customPlotInstace-> savePNG() '. Кстати, это 'QCustomPlot' имя экземпляра? Это кажется странным. – BaCaRoZzo

+0

'QCustomPlot' - это тип переменной, переменная' QCustomPlot' объявляется в классе GraphWidget, но я хочу получить к ней доступ в WidgetClass. Я сделал то, что вы предложили, однако данные, которые я хочу сохранить в png, определены в WidgetClass. WidgetClass получает данные для GraphClass, а GraphClass генерирует график, GraphClass не сохраняет данные, я хочу создать png графика, этот график (с данными) находится в WidgetClass, а не в GraphClass. В идеале мне вообще нечего было делать в GraphClass. Имеет ли это смысл? –

+0

Спасибо! @BaCaRoZzo –

ответ

0

Это была изолированная проблема, но если кто-то имеет такую ​​же проблему, мое предложение заключается в следующем:

Убедитесь, что переменная GraphWidget (переменная для создает QCustomPlot) доступен по всему классу, который пытается использовать его. Я пытался передать ему несколько разных способов, и никто из них не был прав.

Также необходимо создать функцию public в классе GraphWidget, чтобы получить доступ к функции savePng(), которую использует QCustomPlot.