我如何可以访问声明,并在其他功能的主窗口的构造函数初始化的数据?有没有一种方法可以在ui-> customPlot中帮助我?如何根据用户输入动态更改任何项目的位置?
我有下面的代码在我的Qt MainWindow的构造函数:
QCPItemLine* vec1 = new QCPItemLine(ui->mainGraph);
vec1->start->setCoords(0, 0);
vec1->end->setCoords(4, 4);
我希望用户能够输入数字,为2×QTableWidget的,改变其中的箭头指向。例如:如果用户在表中输入2,1,则箭头移动并从0,0指向2,1。
这是据我已经得到:(表1是我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 * VEC 1中mainwindow.h但couldn”弄清楚如何解决“没有适当的默认构造函数可用”错误,看到QCPItemLine构造函数依赖于仅在ui-> setupUI(this)之后可用的数据,该数据在缺省构造函数列表之后调用。我也尝试在on_table1_cellChanged函数中调用QCPItemLine * vec1 = ui-> customPlot-> item(),但得到这个错误:“无法从'QCPAbstractItem *'转换为'QCPItemLine *'”。另外我知道这种方式是有风险的,因为我不能总是依靠vec1作为添加到我的customPlot中的最新项目。
如果我说'访问私人QCPItemLine * VEC 1 = NULL; '在mainWindow.h中,将解决“没有适当的默认构造函数可用”? –
你不能在你的类定义中初始化你的(非静态)成员。你声明它,在初始化列表中初始化它,并在setupUI被调用后实例化你的对象。 – JSilver
太棒了,有道理。谢谢。 –