我正在創建一個Qt GUI,它將爲用戶生成一些表單,讓他們填充它們,然後將表單保存在二進制搜索樹中,然後將其序列化。這是使用Qt(顯然),C++和boost來完成的。圖形用戶界面是此時應用程序的唯一接口。我想在GUI之外實例化我的二叉搜索樹對象,因爲在主GUI類中創建它似乎是一個糟糕的設計模式。這是否正確?將Qt GUI與應用程序外部的對象一起使用
這裏是我的main()
現在:
int main (int argc, char *argv[])
{
QApplication app(argc, argv);
ChocAnGui *gui = new ChocAnGui;
gui->show();
return app.exec();
}
有沒有一種方法來創建一個BST對象的ChocAnGui
類可以使用,但生活實際的GUI之外?我想這樣做:
int main (int argc, char *argv[])
{
MyBST bst = new MyBST;
MyRecord record = new MyRecord;
QApplication app(argc, argv);
ChocAnGui *gui = new ChocAnGui;
gui->show();
return app.exec();
}
我會那麼喜歡GUI能夠呼籲MyBST
和MyRecord
類中的方法從內。因爲在應用程序的開始和結束時我會序列化和反序列化數據,所以這似乎是最抽象的方法(與GUI代碼本身的序列化和反序列化)。我希望這個問題很清楚......當我們說話時,我正在學習所有這些東西。有沒有辦法通過QApplication(argc, argv)
通過這些變量?最終,記錄和BST類將被構建到數據庫中,並且再次,在GUI之外創建實例似乎是最直接的。感謝您提供的任何輸入。
不知道我非常理解你在問什麼(?),但是如果你有一個GUI需要訪問但不「擁有」的數據結構,那麼通過一個指針或引用傳遞給GUI對象構造函數的參數是非常標準的做法。 *(例如'new ChocAnGui(bst)')*如果生命週期管理是一個問題,請考慮智能指針。 – HostileFork
我想也許OP在Qt gui中使用了一種非常簡單的方法,只是在Qt Designer中創建一個表單並顯示它。但不做任何自定義類。 OP真的應該更深入地探索Qt的功能。 – jdi