簡體   English   中英

Qt發出信號std :: string參數調試

[英]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()paramWBMP-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM