中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

net做網站軟文推廣代表平臺

net做網站,軟文推廣代表平臺,網站縮放代碼,網站建設空間使用標準Qt 信號與槽的使用詳解 - 多種綁定形式、同步異步、Lambda表達式等 引言一、信號與槽常見的綁定形式二、信號與槽的連接方式 - 同步異步 引言 在Qt框架中,信號與槽(Signals and Slots)機制是一種強大的通信方式,它允許對象之間進…

Qt 信號與槽的使用詳解 - 多種綁定形式、同步異步、Lambda表達式等

  • 引言
  • 一、信號與槽常見的綁定形式
  • 二、信號與槽的連接方式 - 同步異步

引言

在Qt框架中,信號與槽(Signals and Slots)機制是一種強大的通信方式,它允許對象之間進行通信而無需知道彼此的詳細實現。這種機制是Qt的核心特性之一,廣泛應用于事件處理和對象間的通信,能夠大大簡化編程的復雜性,提高代碼的可維護性和可擴展性。

一、信號與槽常見的綁定形式

使用connect連接信號 (槽函數的參數個數必須小于等于信號函數的參數個數)

    1. connect函數指針 (推薦),例程如下:
      QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)
	QLabel *label = new QLabel;QLineEdit *lineEdit = new QLineEdit;QObject::connect(lineEdit, &QLineEdit::textChanged,label,  &QLabel::setText);
	connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::slot_cs);  // slot_cs是一個普通的槽函數

Qt 5中推薦的信號與槽連接語法,支持函數提示 - 函數補全,會在編譯時檢查到連接錯誤

    1. Lambda表達式(推薦) - 連接和槽函數的實現寫在一切,方便、簡潔且直觀,例程如下:
      QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)
  QByteArray page = ...;QTcpSocket *socket = new QTcpSocket;socket->connectToHost("qt-project.org", 80);QObject::connect(socket, &QTcpSocket::connected, this, [=] () {socket->write("GET " + page + "\r\n");}, Qt::AutoConnection);

lambda表達式(函數)詳解:https://blog.csdn.net/LF__plus/article/details/136873469 - 表達式結構、參數解釋

還有個類似的QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, Functor functor),少了接受者。

    1. 標準connect連接(不推薦) - QT4老語法,例程如下:
      QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
  QLabel *label = new QLabel;QScrollBar *scrollBar = new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label,  SLOT(setNum(int)));

需要注意,signal和slots參數不能包含任何變量名,只能包含類型。相比connect函數指針的連接方式,不能進行函數補全,由于使用宏將信號和槽函數轉換為字符串,如果有問題在運行時候才會報錯,編譯階段不檢查。
還有一個類似的QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection),使用QMetaMethod作為信號和槽函數,而不是字符串.

    1. 界面上設置
      1)- 右鍵控件 - 點擊轉到槽 - 點擊相應的信號,自動生成相應的槽函數,默認綁定無需connect
      2)- 在ui設計界面底部,添加信號和槽的對應關系,如下圖所示:
      在這里插入圖片描述

一般用的不多的知識點:

  1. 將一個信號連接到另一個信號上,當第一個信號發(fā)射時,會觸發(fā)第二個信號
  2. 信號和槽可以重載,使用QOverload 和 QMetaObject::Connection處理重載信號和槽
  3. 一個信號可以連接多個槽,一個槽也能被多個信號連接
  4. 使用disconnect斷開信號和槽的連接
  5. 一個信號和一個槽函數和進行多次connect連接,一次觸發(fā)多次執(zhí)行… 可以設置連接類型來規(guī)避這種情況UniqueConnection
  6. 發(fā)送信號不用加emit也行

可參考:

  1. Qt中connect()方法的一些常見用法:https://blog.csdn.net/weixin_42478379/article/details/137682367
  2. QT標準connect連接(QT4老語法):https://zhuanlan.zhihu.com/p/692721646
  3. QT 信號與槽4種綁定形式:https://blog.csdn.net/weixin_42127524/article/details/131189259
  4. 槽函數被執(zhí)行多次的解決方法及Qt::UniqueConnection作用及和其它連接類型的“與”操作寫法:https://blog.csdn.net/danshiming/article/details/123162126
  5. Qt信號槽/使用問題:https://blog.csdn.net/quguanxin/article/details/102843961

二、信號與槽的連接方式 - 同步異步

信號與槽的連接最后有一個枚舉參數Qt::ConnectionType type = Qt::AutoConnection,默認自動。此參數主要表示信號是立即發(fā)出還是排隊等待:

常量
描述
Qt::AutoConnection0(默認) 發(fā)送接收在同一線程,則Qt::DirectConnection,否則Qt::QueuedConnection
Qt::DirectConnection1發(fā)出信號時會立即槽函數,在信號發(fā)出者的線程中執(zhí)行。
Qt::QueuedConnection2在接受者的事件循環(huán)(線程)中調用。- 異步
Qt::BlockingQueuedConnection3Qt::QueuedConnection一樣,也在接受者線程中調用,但是發(fā)送信號的線程會被阻塞,直到槽函數執(zhí)行完畢 (防止槽函數和信號線程對某個值的操縱沖突)。 - 同步
Qt::UniqueConnection0x80一個標志,可以與上述連接方式進行組合 保證同一信號和同一槽函數只能連接一次,再次connect連接會失敗。
  1. 對于排隊連接Qt::QueuedConnection,參數必須是Qt的元對象系統(tǒng)已知的類型,因為Qt需要復制參數以將其存儲在幕后事件中。如若是自定義類型,可以使用qRegisterMetaType()注冊一下。
  2. 對于Qt::BlockingQueuedConnection,不能用于發(fā)送者接受者在同一個線程的情況,會引起死鎖。 - (為啥?可參考博客:由Qt::BlockingQueuedConnection引起的關閉Qt主頁面而后臺仍有進程殘留:https://blog.csdn.net/youzai2017/article/details/132746319)
  3. 當Lambda表達式作為槽函數時,記得使用以上推薦的方式,寫全參數。如果省略接受者,默認會在發(fā)送者的線程中直接執(zhí)行。- 比如一個線程發(fā)出信號,主線程(UI)線程響應修改相關UI,不寫接受者是主線程,會沖突報錯,因為只有主線程(UI)線程可以修改UI。
http://www.risenshineclean.com/news/3898.html

相關文章:

  • 怎樣做seo網站鏈接東莞疫情最新情況
  • 在哪個網站有兼職做免費發(fā)布推廣信息的b2b
  • 哈爾濱網站推廣公司有創(chuàng)意的網絡廣告案例
  • 私人精品貨源網站有哪些360收錄提交入口網址
  • 美術教育機構網站建設方案萬網域名注冊
  • 網站建設注意哪些內容如何百度收錄自己的網站
  • 網站域名空間費用windows優(yōu)化大師好用嗎
  • 怎么做優(yōu)惠券網站電子商務主要干什么
  • 口紅機網站怎么做免費的編程自學網站
  • 網站建站知識惠州seo外包平臺
  • 有哪些制作網站的公司嗎優(yōu)質外鏈
  • 幼兒園主題活動設計網絡圖優(yōu)化網站平臺
  • 做的好的中醫(yī)網站網絡游戲推廣公司
  • 網站應用開發(fā)微博營銷案例
  • wordpress文章可見隱藏內容全網seo優(yōu)化電話
  • 廣州網站建設開發(fā)團隊查看百度關鍵詞價格
  • 建設小說網站的系統(tǒng)有哪些目前主流搜索引擎是哪種
  • 私人做網站費用如何注冊域名及網站
  • 做網站1g網頁空間夠嗎百度推廣退款電話
  • 萬戶網站建設拉新app推廣接單平臺
  • 上海建筑建材業(yè)網招標seo營銷推廣
  • 做家電家具回收用哪個網站好網絡營銷服務商
  • wordpress整合ldap重慶網站優(yōu)化公司
  • 怎么使用服務器做網站哪里可以引流到精準客戶呢
  • 南山制作網站公司b站推廣網站2024
  • 在線客服系統(tǒng)功能百度禁止seo推廣
  • 做ppt醫(yī)學專業(yè)圖片網站網絡營銷論文畢業(yè)論文
  • 上海專業(yè)做網站價格營銷策劃的重要性
  • wordpress 基本模版淘寶seo
  • 南寧網站空間深圳網絡推廣推薦