2016-05-03 193 views
0

有沒有辦法將QMessageBox的文本中的換行符限制在<br>的位置?即沒有自動換行符在其他地方?像msgBox.setAutoLinebreaks(False)東西就好了QMessageBox避免自動換行

+0

當文本到達盒子的末端時,消息框可能應該在行上斷開,如果沒有,它們將溢出盒子外。文檔說「文本將被解釋爲純文本」,IE,「
」應打印爲「
」,並且您自己的中斷應該是「\ n」而不是「
」。 – Jite

+0

'textFormat'在默認情況下被設置爲自動圖文集,並將'
'解釋爲換行符(不應與\ n混合!)。這工作正常,但'QMessageBox'的寬度應該是可調整的,或者這是固定的嗎? –

回答

1

如果你真正想要的,你可以使用這個骯髒的黑客做到這一點:

QMessageBox msgBox; 
QString loremIpsum = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo."; 
loremIpsum.replace(" ", "&nbsp;"); 
msgBox.setText(loremIpsum); 
msgBox.setTextFormat(Qt::RichText); 
msgBox.exec(); 

但該消息框的大小仍然是由一些內在的邏輯限制,所以如果不適合,它就不會顯示該行的其餘部分。在我的系統上,這被截斷爲「ab ill」。請注意,自動中斷算法不僅可能會在空格處破裂(不確定),所以您可能不得不使用非破折號連字符或更多。我不敢將其用作通用解決方案,但它可以用於特定情況。