checkbox信號 如何在QT中寫兩個(gè)類,它們可以相互發(fā)信號與接收信號?
如何在QT中寫兩個(gè)類,它們可以相互發(fā)信號與接收信號?問題是我的信號可以發(fā)送到插槽,但我不知道如何將指針更改為qcheckbox*類型。然后我可以訪問復(fù)選框的名稱。函數(shù)是直接發(fā)送qbytearray對象
如何在QT中寫兩個(gè)類,它們可以相互發(fā)信號與接收信號?
問題是我的信號可以發(fā)送到插槽,但我不知道如何將指針更改為qcheckbox*類型。然后我可以訪問復(fù)選框的名稱。函數(shù)是
直接發(fā)送qbytearray對象,而不是指針。QT的數(shù)據(jù)對象(qstring、qbytearray、container等)都是隱式共享的。復(fù)制時(shí),它們共享相同的數(shù)據(jù),而不需要深度復(fù)制。深度復(fù)制僅在寫入時(shí)觸發(fā)(任何非常量方法)。所以不用擔(dān)心用信號槽發(fā)送qbytearray。QT參數(shù)傳遞的代價(jià)接近于零。此外,如果它不是隱式共享的,則使用智能指針而不是裸指針。例如,可以使用STD::shared_uptr和qsharedpointer。順便說一句,QT程序推薦使用qtthread,它更好地支持事件系統(tǒng),開銷也很低,因?yàn)椴恍枰谒姥h(huán)中寫入線程。qtthread中的對象發(fā)送信號時(shí)隙,在接收線程中執(zhí)行時(shí)隙函數(shù),從而實(shí)現(xiàn)數(shù)據(jù)安全而不需要任何鎖。如果使用這樣的傳統(tǒng)線程,那么slot函數(shù)位于emit位置,由發(fā)送線程執(zhí)行。您需要處理數(shù)據(jù)安全和鎖定的問題,這更麻煩