我如何可以訪問聲明,並在其他功能的主窗口的構造函數初始化的數據?有沒有一種方法可以在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
太棒了,有道理。謝謝。 –