功能:
函式原型:
t qobject_cast ( qobject * object )
本方法返回object向下的轉型t,如果轉型不成功則返回0,如果傳入的object本身就是0則返回0。
在使用時有兩個限制:
1、t型別必須繼承自qobject。
2、在宣告時必須有q_object巨集。
應用:多個物件的 signal 會連線到同乙個 slot 時(例如多個button可能會connect到乙個slot函式onclick())。
用法:
qobject * obj = sender(); //返回發出訊號的物件,用qobject型別接收
qpushbutton *button_tmp = qobject_cast(obj); //向下轉型為按鈕型別
if (button_tmp != nullptr) //是否轉型成功
qobject_cast 安全在於:當obj不屬於qpushbutton 的型別或者其子類的時候不能轉換
qpushbutton *button_tmp = qobject_cast(obj);
而強制轉換無論obj 是什麼型別都能轉換成功,轉換後截斷也好,超位也好,都能夠成功。這樣是非常不安全的!!
qpushbutton * button_tmp = (qpushbutton *)obj;
參考部落格1
參考部落格2
qt中字元的轉換
qt中將int long型轉換成char string char轉換成qstring qstring buf qstring qlatin1string char char 轉換為qstring qstring 賦值為char str.tostdstring c str 例如char tockeni...
Qt中的unicode轉換
在qt中,在大多數情況下都是採用unicode的形式儲存的,但是qbytearray實際上是以char的形式儲存的,因此轉換成unicode表示的qstring時需要根據編碼的型別進行轉換。cpp view plain copy include include include include int...
qt中字元的轉換
qt中將int long型轉換成char string char轉換成qstring qstring buf qstring qlatin1string char char 轉換為qstring qstring 賦值為char str.tostdstring c str 例如char tockeni...