qt信號(hào)連接信號(hào) QT槽函數(shù)如何接收字符串信號(hào)高人指點(diǎn)下?
QT槽函數(shù)如何接收字符串信號(hào)高人指點(diǎn)下?直接發(fā)送qbytearray對(duì)象,而不是指針。QT的數(shù)據(jù)對(duì)象(qstring、qbytearray、container等)都是隱式共享的。復(fù)制時(shí),它們共享相同的
QT槽函數(shù)如何接收字符串信號(hào)高人指點(diǎn)下?
直接發(fā)送qbytearray對(duì)象,而不是指針。QT的數(shù)據(jù)對(duì)象(qstring、qbytearray、container等)都是隱式共享的。復(fù)制時(shí),它們共享相同的數(shù)據(jù),而不需要深度復(fù)制。深度復(fù)制僅在寫(xiě)入時(shí)觸發(fā)(任何非常量方法)。所以不用擔(dān)心用信號(hào)槽發(fā)送qbytearray。QT參數(shù)傳遞的代價(jià)接近于零。此外,如果它不是隱式共享的,則使用智能指針而不是裸指針。例如,可以使用STD::shared_uptr和qsharedpointer。順便說(shuō)一句,QT程序推薦使用qtthread,它更好地支持事件系統(tǒng),開(kāi)銷(xiāo)也很低,因?yàn)椴恍枰谒姥h(huán)中寫(xiě)入線(xiàn)程。qtthread中的對(duì)象發(fā)送信號(hào)時(shí)隙,在接收線(xiàn)程中執(zhí)行時(shí)隙函數(shù),從而實(shí)現(xiàn)數(shù)據(jù)安全而不需要任何鎖。如果使用這樣的傳統(tǒng)線(xiàn)程,那么slot函數(shù)位于emit位置,由發(fā)送線(xiàn)程執(zhí)行。您需要處理數(shù)據(jù)安全問(wèn)題并鎖定它們。相反,它更麻煩
connect(this,signal(customcontextmenurrequested(const qpoint&;POS)),[R this,slot(create context menu(const qpoint&;POS))這樣寫(xiě)。信號(hào)和插槽只需要寫(xiě)入類(lèi)型。無(wú)需編寫(xiě)形式參數(shù),例如connect(this,signal(customcontextmenurrequested(const qpoint&))、 我不太了解您的編程語(yǔ)言,但我會(huì)告訴您我的想法。 1)在B中添加一個(gè)構(gòu)造函數(shù),它在窗體a的類(lèi)中接受參數(shù)和傳遞,這樣就可以為窗體調(diào)用B窗體的實(shí)例化代碼:BBB=New B(this)//this represented a Form 2)然后將這個(gè)實(shí)例保存在B window中,引用里面的Line1對(duì)象,通過(guò)設(shè)置屬性或其他方法將第1行的內(nèi)容設(shè)置為與B輸入一致,然后隱藏B窗體。customContextMenuRequested(const QPoint & ,pos) 我在Qt樹(shù)控件中用這個(gè)信號(hào),怎么會(huì)報(bào)No such signal呢?