Qt基礎面試題


Qt基礎面試題

1:QT信號槽機制的優缺點 :

1)QT信號槽機制的引用精簡了程序員的代碼量 (不用寫回調函數)
2)QT的信號可以對應多個槽(但他們的調用順序隨機),也可以多個槽映射一個信號 
3)QT的信號槽的建立和解除綁定十分自由 
4)信號槽同真正的回調函數比起來時間的耗損還是很大的,所有在嵌入式實時系統中應當慎用 
5)信號槽的參數限定很多例如不能攜帶模板類參數,不能出現宏定義等等

 

2、多線程情況下, Qt中的信號槽分別在什么線程中執行, 如何控制? 


可以通過connect函數的第五個參數來控制, 信號槽執行時所在的線程 

1)自動連接(AutoConnection),默認的連接方式,如果信號與槽,也就是發送者與接受者在同一線程,等同於直接連接;如果發送者與接受者處在不同線程,等同於隊列連接。
2)直接連接(DirectConnection),當信號發射時,槽函數立即直接調用。無論槽函數所屬對象在哪個線程,槽函數總在發送者所在線程執行,即槽函數和信號發送者在同一線程
3)隊列連接(QueuedConnection),當控制權回到接受者所在線程的事件循環時,槽函數被調用。槽函數在接受者所在線程執行,即槽函數與信號接受者在同一線程

3、描述QT中的文件流(QTextStream)和數據流(QDataStream)的區別, 他們都能幫助我們完成一些什么事情. 

QTextStream – 文本流, 操作輕量級數據(int, double, QString), 數據寫入文件中之后以文本的方式呈現。 
QDataStream – 數據流, 通過數據流可以操作各種數據類型, 包括類對象, 存儲到文件中數據可以還原到內存。 
QTextStream, QDataStream可以操作磁盤文件, 也可以操作內存數據, 通過流對象可以將數據打包到內存, 進行數據的傳輸.

4、描述Qt下Tcp通信的整個流程 

具體解釋 :https://www.cnblogs.com/yuweifeng/p/9382841.html

QT如果要進行網絡編程首先需要在.pro中添加如下代碼:QT += network 

服務器端: 
1. 創建用於監聽的套接字 
2. 給套接字設置監聽 
3. 如果有連接到來, 監聽的套接字會發出信號newConnected 
4. 接收連接, 通過nextPendingConnection()函數, 返回一個QTcpSocket類型的套接字對象(用於通信) 
5. 使用用於通信的套接字對象通信 
1>. 發送數據: write 
2>. 接收數據: readAll/read 
客戶端: 
1. 創建用於通信的套接字 
2. 連接服務器: connectToHost 
3. 連接成功與服務器通信 
1>. 發送數據: write 
2>. 接收數據: readAll/read

 

 

 

 6、描述QT下udp通信的整個流程 

 

QT下udp通信服務器端和客戶端的關系是對等的, 做的處理也是一樣的. 
1. 創建套接字對象 
2. 如果需要接收數據, 必須綁定端口 
3. 發送數據: writeDatagram 
4. 接收數據: readDatagram 

7: 描述QT下多線程的兩種使用方法, 以及注意事項 

第一種方法: 
1. 創建一個類從QThread類派生 
2. 在子線程類中重寫 run 函數, 將處理操作寫入該函數中 
3. 在主線程中創建子線程對象, 啟動子線程, 調用start()函數 
第二種方法: 
1. 將業務處理抽象成一個業務類, 在該類中創建一個業務處理函數 
2. 在主線程中創建一QThread類對象 
3. 在主線程中創建一個業務類對象 
4. 將業務類對象移動到子線程中 
5. 在主線程中啟動子線程 
6. 通過信號槽的方式, 執行業務類中的業務處理函數 
多線程使用注意事項: 
* 1. 業務對象, 構造的時候不能指定父對象 
* 2. 子線程中不能處理ui窗口(ui相關的類) 
* 3. 子線程中只能處理一些數據相關的操作, 不能涉及窗口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM