Qt QT之中多個訊號連線同乙個槽 細說版

2021-07-10 16:56:20 字數 1188 閱讀 8764

qt的開發中有時候需要將多個訊號連線到乙個槽函式中,那麼這些訊號怎麼才能找到槽函式中自己的如意郎君?

其實,有很多例子都是簡單將sender()指標強行轉化成訊號傳送者型別,然後判斷其是否存在,如果存在那麼強

行轉化成這個類的指標,就可在在槽函式裡面被認定下來。在比如這麼乙個環境下:乙個button,乙個qtimer都指向

乙個槽函式時候,我們分別將sender()指標強行轉化成qpushbutton和qtimer型別,只要其存在,在槽函式裡面

分類寫是可以的。但是問題是,比如有多個pushbutton了?好吧?說了這麼多,直接上**!!!

void

dialog::movieslot()

if(sender==

ui->playbtn)//比較符號的兩邊不管是c還是c++中都是先將兩邊隱式轉換成同一型別(這種型別叫公共型別)後再比較

movie

=new

qmovie("./images/play.gif");

ui->viewlabel->setmovie(movie);

qdebug()<<"movieactivity"

movie->start();

}

if(sender==

ui->playbtn2)

movie

=new

qmovie("./images/play2.gif");

ui->viewlabel->setmovie(movie);

qdebug()<<"movieactivity"

movie->start();

}
}
上面直接按照sender()指標與訊號**做對比,就可以很好區分。

另外,一般情況下,乙個指標要麼是空,要麼非空,而我們這裡可以直接來個if(

dynamic_cast(sender())
)其實看文件會知道,sender()指標要麼存在非空,要麼不存在那就被置為0的。

Qt QT之中多個訊號連線同乙個槽 細說版

qt qt之中多個訊號連線同乙個槽 細說版 qt的開發中有時候需要將多個訊號連線到乙個槽函式中,那麼這些訊號怎麼才能找到槽函式中自己的如意郎君?其實,有很多例子都是簡單將sender 指標強行轉化成訊號傳送者型別,然後判斷其是否存在,如果存在那麼強 行轉化成這個類的指標,就可在在槽函式裡面被認定下來...

多個請求使用同乙個Servlet

如果jsp中乙個請求對應乙個servlet那要建很多servlet,冗餘較多。我們可以把乙個模組的請求封裝在乙個servlet,實現功能的模組化,從而簡化 其實這種方式有點類似於struts中的action。新建jsp檔案 輸入如下 分別是3個請求,請求同乙個servlet,但是後邊跟的引數meth...

同乙個Tomcat部署多個專案

一 同一tomcat 多個埠部署不同的專案 在tomcat 安裝目錄下c program files apache tomcat 6.0.29 conf找到server.xml 1 在結點後面增加結點,如下 好處 可以把多個專案部署在根目錄 二 tomcat 部置方式 tomcat部署專案有3種方法...