2016-12-22 45 views
0

我有一個叫做「mainWindow」的Qt-GUI。Qt:在構造函數外使用GUI小部件的類的訪問函數

在構造函數中,我使用了一個名爲「testclass」的類,它使用GUI中的一個小部件。

mainWindow::mainWindow(QWidget *parent): QMainWindow(parent) 
{ 
testclass window_test(ui.Widget); 
window_test.function(); 
} 

現在我想在構造函數之外訪問「window_test」的函數。

我嘗試添加

testclass window_test(ui.Widget); 

的類成員的主窗口類,但我不能訪問ui.Widget那裏。

什麼是處理這種情況的最佳方法?

回答

0

您是否在mainWindow的頭文件中聲明瞭函數的原型?這可能只是一個範圍問題。

+0

我有「mainWindow」類和「測試類」的.h/.cpp文件。 我在「mainWindow」構造函數中生成了一個「testclass」的實例。但是現在我只能在構造函數中訪問「testclass」的函數,但我想在按鈕回調函數中訪問它們。 – Michael

+1

在'mainWindow.h'中將這個實例添加到private下,這應該使它在整個mainWindow中可用的.cpp。 – Sphics

0

我將「testclass」的實例添加到mainWindow.h中,但我不得不爲它使用標準構造函數。因此我宣佈了一個新的函數來將該小部件傳遞給該類。

0

如果你有一個參數傳遞給你的成員變量window_test的構造函數,你可以這樣說:

mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent), 
    window_test(ui.Widget) 
{ 
} 

成員變量的聲明僅僅是

class mainWindow { 
    ... 
    testwindow window_test; 
}; 

如果ui本身就是mainWindow的成員變量,它有一個構造函數,聲明的順序可能很重要。 ui應在window_test之前聲明,因此它在使用時已經構建。

相關問題