我對Qt和C++一般都很陌生,所以這可能是一個簡單的問題。Qt:執行從另一個類的追加
目前存在的問題:
我想執行的是通過調用另一個類的函數將文本到TextEditField功能。我可以調用函數和文本通過相同的類追加,但是當我嘗試從另一個類調用它時,它不會執行追加並且不會出現錯誤。
爲簡單起見,我將只需要調用我的類A和B.
Class A // The class that was created automatically by Qt
Class B // A class that i made myself
A類有一個名爲 「記錄」 功能,它看起來像這樣:
void ClassA::logger()
{
ui->Logg->append("A log message"); // Straight forward, it appends the text
}
我可以請撥打ClassA :: logger來自A類中的其他功能,一切正常,如下所示:
void ClassA::MakeALogg()
{
logger(); // The logger function appends the text to TextEditField Logg
}
但是,當我嘗試從另一個函數執行記錄器功能,它將無法正常工作。我當前的代碼看起來像這樣在ClassB的:
void ClassB::MakeALogg()
{
ClassA A;
A.logger(); // The text doesn't get appended to TextEditField Logg via external class
}
調用記錄儀()函數,並沒有錯誤給地方時,這是行不通的。
最終的結果是讓這個被啓用以獲得傳遞到logger()函數的QString,這是我現在可以在這個時候做的事,如果我通過相同的類調用它,例如ClassA::MakeALogg() to ClassA::logger(QString LogMSG)
。但我想首先確保我可以從另一個類訪問ui->函數。
我的理論
嗯,我想,問題在於以某種形式錯過實例化的類此特定exection的(例如UI類型)。我可以在這個階段調用A類到B類的函數,並返回{for example ClassA::GiveNumber() to ClassB::NumberCalculator()
}。但是當它涉及到用戶界面時,由於某種奇怪的原因無法建立聯繫。
我也試圖在ClassB的的頭文件,使關係到它,但沒有工作,要麼:
class ClassA;
class ClassB
{
public:
ClassA * PointToClassA;
}
Void ClassB::Logger()
{
PointToClassA = new ClassA;
ClassA->logger();
}
在你的僞代碼中似乎沒有問題。你能做兩件事嗎?首先是切換一個斷點,然後逐步進行(它在每個體面的IDE中,就像優秀的QtCreator一樣)?第二點是:你可以發佈你的實際代碼,特別是'void ClassB :: MakeALogg()'方法嗎? – Fezvez
[Qt問題在處理類GUI訪問時可能出現的重複](http://stackoverflow.com/questions/7311128/qt-problem-when-working-over-classes-gui-access) –
所以你不喜歡對你的其他問題的答案,也不想等待一段時間來獲得更好的答案?好的,在這種情況下,你只需要重新發布完全相同的問題;) –