1. 如何在Qt中將文本渲染到圖像
在 Qt5 中,新增了 QOpenGL* 類,用以取代之前的 QGL* 類。
注意,雖然我們仍然能通過 Qt5 中的 OpenGL 模塊使用 QGL* 類,但強烈建議大家在新的 Qt 應用程序中使用 QOpenGL* 類而不是 QGL* 類。
2
另外,在 Qt5 中,已經將 OpenGL 集成到了 Gui 模塊中。因此,我們要想使用與 OpenGL 相關的類和函數,只需要在 .pro 工程文件中包含 gui 模塊就可以了,無需像以前一樣還要包含 opengl 。
END
二、怎樣在Qt5中使用OpenGL
下面,我們來通過一個實際例子來演示怎樣在 Qt5 中使用 OpenGL。在這個例子中,為了便於大家理解,我們只創建一個簡單的背景為黑色的 OpenGL 窗口。下面是程序的運行效果圖。
首先,我們需要創建一個自定義的窗口類 Window。該類的父類有兩個:
1)QOpenGLWindow:以公有方式繼承
2)QOpenGLFunctions:以保護方式繼承
另外,在通常情況下,我們還需要實現三個從父類繼承的虛函數:
1)void initializeGL()
2)void resizeGL(int width, int height) //若無需對高、寬進行處理,此函數可省
3)void paintGL()
然後,我們來實現上面所聲明的函數。
1) initializeGL
該函數用來初始化當前的 OpenGL 環境。
注意,在此函數中,我們必須調用 initializeOpenGLFunctions(); 語句以便 Qt 在後台完成 OpenGL 環境的初始化工作。
隨後,使用 glClearColor 函數來設置清除顏色。該函數的前三個參數分別是紅、綠、藍的分量值,第四個參數為透明度值。
2)resizeGL
該函數主要用來對高度和寬度進行一些變化處理。當然,如果你沒有什麼特殊需求,也可以不處理這個函數。
3)paintGL
該函數才是重頭戲,繪制一般在此函數內進行。在這里,作為示範,我們只是簡單地用之前設置的清除顏色來清除窗口背景。
最後,我們添加一個 main.cpp 文件,在主函數中新建一個 Window 類對象,然後將其顯示出來。啊哈,縱觀整個過程,相比之前的 Qt 版本,在 Qt5 中使用 OpenGL 是不是超級簡單呢?
2. Qt如何實時顯示一個文件的內容
在載入文件時, 使用一個QFileInfo::lastModified獲取最近修改時間, 然後開一個定時器, 輪詢一個文件的最近修改時間, 判斷和舊的時間不一樣的時候, 就重新載入
3. QT treewidget控制項怎麼能實現從指定的文件夾裡面的每個子文件夾中讀取指定格式的文件(如.txt)並顯示
①執行「視圖→工具欄→控制項工具箱」命令,展開「其他控制項」按鈕,「控制項工具箱」工具欄
②單擊工具欄上,在彈出的下拉列表中,選擇「ShockwaveFlashObject」選項,當滑鼠變成細十字線,按住左鍵在工作區中拖出一個矩形(這就是後來的播放窗口)。當
③滑鼠移到矩形框入右下角拖動方向的箭頭,按住左鍵並拖動來調整矩形的大小的權利。在矩形框
④單擊滑鼠右鍵,在隨後彈出的快捷菜單中選擇「屬性」選項,打開「屬性」對話框中,輸入需要在「電影」插入Flash動畫文件名後面的框和完整路徑,然後選擇關閉「屬性」窗口。
【注】:為了方便移動演示,與保存在同一文件夾中的Flash動畫文件的最佳表現,那麼路徑也可以使用相對路徑。
[提示]:Flash動畫文件名和完整路徑需要插入最好的英文字元!
4. 我用QT Creator寫程序,想在application output里輸出信息應該怎麼寫
在頭文件裡麵包含
#include <QDebug>
在你需要增加輸出的位置調用qDebug()函數進行輸出。
下面是一個專例子
#include <QtGui/QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<<"Hello,Qt!";
return a.exec();
}
qDebug的用法詳見屬Qt 助手。
5. QT編程 獲取當前工作目錄下的文件列表,並以Tree的形式顯示在界面上
String[] s={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
System.out.print("請輸入數字(1-12):");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
int m=Integer.parseInt(str);
if (m<=0||m>=13)
{