2012-12-21 20 views
1

在下面的代碼中,標籤顯然有足夠的空間放在一條線上,但由於某種原因,它會在'那些'之後將它分成兩行。爲什麼以及如何防止這種情況?爲什麼QLabel提前包裝?

Widget::Widget(QWidget *parent) 
    : QWidget(parent) 
{ 
    this->setFixedSize(250,100); 

    QLabel *label = new QLabel; 
    label->setStyleSheet("background-color:blue"); 
    label->setWordWrap(true); 
    label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 
    label->setText("Oh my gosh thats too funny!"); 
    label->setParent(this); 

} 

再次爲清楚起見,它表明:

Oh my gosh thats 
too funny!

而且我想:

Oh my gosh thats too funny!
+1

不應該是'label-> setWordWrap(false);'???如果它不是一個錯字,那麼我認爲你有一個答案。來自Qt文檔:「如果這個屬性是真的,那麼標籤文本將在必要時包裝在文字分隔處;否則它根本沒有被包裝。」 – doc

+1

@doc問題在於:「必要時」。這是必要的之前包裝。 – chacham15

+1

如果您希望QLabel適合父級窗口小部件的大小,則應使用佈局。 'QVBoxLayout * layout = new QVBoxLayout;布圖設計> addWidget(標籤);這 - >的setLayout(佈局);'。 QWidget不會自行重新定位和調整子窗口小部件的大小。 – doc

回答

0

您是否使用了Widget任何佈局?如果不嘗試設置QLabels寬度和高度手動

編輯:

我寫的是不使用任何QLayout代碼,它工作得很好,很簡單

QLabel *label= new QLabel(QString::fromUtf8("Client code"), this); 
label->setGeometry(posx, posy, w, h); 

希望這有助於

PS:'this'is my Dialog

class MyDialog : public QDialog 
+0

問題是有/沒有佈局(我都試過)。不過,你是正確的,如果我手動設置高度,那麼它將適合一條線,但我也有以下問題:http://stackoverflow.com/questions/13994902/how-do-i-get-a- qlabel-擴大到全角#13994902 – chacham15

+0

檢出剛剛編輯的新代碼 – fredcrs