Как я могу получить доступ к данным, которые объявлены и инициализированы в конструкторе MainWindow в других функциях? Есть ли способ для ui-> customPlot, который поможет мне здесь?Как изменить динамику позиции элемента на основании ввода пользователем?
У меня есть следующий код в моем конструкторе Qt MainWindow:
QCPItemLine* vec1 = new QCPItemLine(ui->mainGraph);
vec1->start->setCoords(0, 0);
vec1->end->setCoords(4, 4);
Я хочу, чтобы пользователь мог вводить цифры в 2x1 QTableWidget и изменить, где стрелка указывает. Пример: если пользователь вводит 2,1 в таблицу, стрелка перемещается и указывает от 0,0 до 2,1.
Это, насколько я получил: (. Table1 это имя моего QTableWidget)
void MainWindow::on_table1_cellChanged(int row, int column)
{
// how can I access vec1 from here, since it is declared only in the scope of the constructor?
}
Я попытался положить QCPItemLine * vec1 в mainwindow.h, но не мог» t выяснить, как разрешить ошибку «Нет подходящего конструктора по умолчанию», поскольку конструктор QCPItemLine полагается на данные, которые доступны только после ui-> setupUI (this), который вызывается после списка конструкторов по умолчанию.
Я также попытался вызвать QCPItemLine * vec1 = ui-> customPlot-> item() в функции on_table1_cellChanged, но получил эту ошибку: «невозможно преобразовать из« QCPAbstractItem * »в« QCPItemLine * ». Плюс я знаю, что это рискованно, потому что я не всегда могу полагаться на vec1, являющийся последним элементом, добавленным в мой customPlot.
Если я говорю 'частный QCPItemLine * vec1 = NULL; 'in mainWindow.h, не будет ли разрешено« подходящий конструктор по умолчанию »? –
Вы не можете инициализировать свой (не статический) член в определении вашего класса. Вы объявляете это, инициализируете его в списке инициализации и создаете экземпляр вашего объекта после вызова setupUI. – JSilver
Отлично, имеет смысл. Благодарю. –