2014-03-25 24 views
1

我對編譯沒有OpenGL支持的QT 5.2.1有點不確定。我一直認爲OpenGL對於希望做圖形的應用程序是需要的,但是當我閱讀文檔時,還有關於桌面功能的2D的討論。如果我不打算使用任何圖形,只想利用QT的窗口化框架,我還需要桌面支持嗎? 不知何故,這是沒有意義的,以允許它作爲一個可選的組件,但我不知道它是否是必需的,因爲我不知道這種支持將用於什麼。桌面所需的QT OpenGL for windowing?

所以主要問題是,如果我只是想實現一個使用窗口和小部件的常規桌面應用程序,我不需要用OpenGL支持進行編譯,對吧?

到目前爲止,我已經使用wxWidgets作爲我的跨平臺庫,並且從不需要觸摸OpenGL,所以我會以相同的方式使用QT。

回答

1

如果我只是想實現一個使用窗口和小部件的常規桌面應用程序,我不需要用OpenGL支持編譯,對不對?

我認爲答案是肯定的;雖然在應用程序級別,如this thread特別呼籲,從Qt 5起將圖形子系統設置爲光柵-graphicssystem raster已被棄用,您可以set the window's surface typeRasterSurface,它允許使用光柵渲染使用QBackingStore(非OpenGL繪圖上下文) ; its API doc證實了這一點。 QWindow's documentation也簡要介紹了這一點。

如果我不打算使用任何圖形,只是想利用QT的窗口框架,我是否仍然需要桌面支持?

是的,如果你需要QML and Qt5's QtQuick 2 render or QtGui which exclusively use OpenGL並且是Qt圖形系統的核心部分。不,如果你能做到這一點沒有任何的。這Qt 5 Raster Window sample確實如此;你可以注意到項目文件中沒有提及OpenGL。

0

只有在想要使用glWidget時才需要OpenGL模塊,對於不需要它的傳統桌面應用程序。

1

答案是:它很複雜。 QtCore可以在沒有OpenGL依賴的情況下完美運行,但是在Qt5中,爲了提高性能,他們將widget系統大量移動到使用OpenGL(ES)。通過Qt文檔找到答案有點困難,但是如果你只是想用QtWidgets構建一個Qt5應用程序,那麼你可以在configure語句中指定沒有OpenGL,並且你會沒事的。如果你想使用QML,那麼你需要OpenGL依賴才能使它工作,但QtWidget系統現在已經有效地完成了,所以它不會很快得到改進。

+0

實際上使用QML是國際海事組織要求的,如果你想在源代碼之外建立GUI的建議,對吧?所以我想我必須去找出如何獲得OpenGL支持的麻煩...... – Devolus

+0

是的,QML是一種聲明式語言,正好用於從代碼中分離UI設計。是的,如果你需要QML,那麼你選擇OpenGL,因爲它是一個依賴。 – legends2k

+0

@Devolus:你仍然可以用'QtWidgets'構建一個GUI,但是除非你願意自己構建自定義元素,否則它不會像使用QML獲得的'custom'一樣。我個人仍然使用'QtWidgets'作爲主UI,並且只是根據需要構建自定義UI組件,但它的學習曲線略微陡峭。 –