2013-02-16 46 views
-1

我遇到了QLabel問題。我有一個QLWidget,裏面有一個QLabel。現在我想改變標籤的文本與下面的代碼:訪問QLabel文本時出現分段錯誤

QLabel* safetyLabel = this->findChild<QLabel *>("safety_bits"); 

safetyLabel->setText(QString("test")); 
printf("%i", (safetyLabel->text()).length()); 

,但我總是得到一個「分段故障」。我覺得這很簡單,但我看不到它...

任何想法?

+0

你檢查'safetyLabel'是否是'nullptr'?如果找不到「safety_bits」,findChild將返回一個。 – cmannett85 2013-02-16 11:38:25

+0

哈哈你說得對,它是一個nullptr,好像我搞砸了。謝謝! – 2013-02-16 11:55:10

回答

0

safetyLabel可以NULL如果使用QtCreators'設計師建立自己的UI,你在MainWindow類的構造函數調用ui->setupUi(this);前執行代碼。

+0

或者由於各種其他原因,它可能爲空。在解引用之前肯定檢查指針是非空的! – jmk 2013-02-16 23:22:38

0

這是代碼。

QLabel *safetyLabel = NULL; 
safetyLabel = (QLabel *) this->findChild("safety_bits"); 
if(!safetyLabel) 
{ 
    qDebug() << "Failed to find safety_bits label!"; 
    return 1; 
} 
safetyLabel->setText(QString("safety_bits is here"));