[英]Qt emit signal std::string parameter debug
我在Qt信號槽中使用字符串時遇到問題。 由於某些原因,只要涉及帶有字符串參數的信號,slot函數就無法獲取值。 我在下面粘貼了相關代碼,並在Qt Creator調試會話屏幕截圖中粘貼了詳細信息-
HradDelegate類:
void HradDelegate::OnSsnChanged(std::string param) {
qDebug() << "HradDelegate::OnSsnChanged() " << param.c_str();
emit ssnChanged(param);
}
如您qDebug()
, param
是WBMP-FM
,當在qDebug()
行之后設置斷點時,
類MainWindow:
void MainWindow::init() {
qRegisterMetaType<std::string>("std::string");
connect(m_HradDelegate, SIGNAL(ssnChanged(std::string)), this, SLOT(OnSsnChanged(std::string)));
}
void MainWindow::OnSsnChanged(std::string param) {
qDebug() << "MainWindow::OnSsnChanged() " << param.c_str();
// extra code removed for clarity
}
在qDebug()
行之后設置斷點時,
現在, param
的值在MainWindow::OnSsnChanged()
為垃圾,並且出現分段錯誤錯誤。
該項目針對多個平台進行編譯。 它在Ubuntu 14.04 / 16.04和OS X上運行良好。當我在ARM7hf上編譯並運行時,我看到上面的錯誤,並且所有涉及std::string
的信號都發生了錯誤。
有什么我想念的嗎?
謝謝。
std :: string轉換QString和QString轉換std :: string
std::string name="1234";
QString data = QString::fromStdString(data);
name = data.toStdString()
我使用15.04,這沒有錯誤,您的信號是正確的,並且在connet或您可以建立一個新的專業人士之前進行初始化,然后您可以從兩者之間的比較中得到結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.