2010-11-24 69 views
0

早上好, 我必須佈局一些QWidgets和佈局到一個主佈局,但我有一個空間,我不能刪除的問題。 基本上我會達到的是一個包含網格佈局和一些按鈕的水平佈局(全部在水平線上)。網格佈局(2x2)包含2個QLabels和2個QLeds。 不幸的是Qt之間的網格佈局和第一個按鈕之間的空間,你可以看到在這裏附圖http://img413.imageshack.us/img413/9132/problemhu.png 我會刪除這樣的空間。 下面的代碼我寫道:問題與Qt佈局,我不能刪除空間

QGridLayout* gl = new QGridLayout(); 
gl->setAlignment(Qt::AlignLeft); 
gl->setContentsMargins(0, 0, 0, 0); 
gl->addWidget(activeLabel, 0, 0); 
gl->addWidget(m_focusLed, 0, 1); 
gl->addWidget(encodingLabel, 1, 0); 
gl->addWidget(m_encodingLed, 1, 1); 

這創造了網格佈局,並增加了QLabels和QLeds就可以了。 然後,添加按鈕到水平佈局,使:

/* layout buttons */ 
    QHBoxLayout* lo = new QHBoxLayout(); 
    lo->setSpacing(0); 
    lo->addLayout(gl); // <--here I add the grid layout 
    lo->addWidget(m_goToBeginBtn); 
    lo->addWidget(m_goToEndBtn); 
    lo->addWidget(m_frewBtn); 
    lo->addWidget(m_fforBtn); 
    lo->addSpacing(10); 
    lo->addWidget(m_ffrewBtn); 
    lo->addWidget(m_ffforBtn); 
    lo->addSpacing(10); 
    lo->addWidget(m_prevBtn); 
    lo->addWidget(m_nextBtn); 
    lo->addWidget(m_playBtn); 
    lo->addWidget(m_stopBtn); 
    lo->addWidget(m_cutBtn); 
    lo->addSpacing(10); 
    lo->addWidget(m_zoomInBtn); 
    lo->addWidget(m_zoomOutBtn); 
    lo->addSpacing(10); 
    lo->addWidget(m_bgSndCheckBox); 
    lo->addWidget(m_showPanelBtn); 

我不知道爲什麼網格佈局,第一個按鈕之間的Qt等地方的空間。我會刪除它。我能怎麼做?我沒有從Qt郵件列表獲得幫助。

問候

回答

1

如何解決這個問題很大程度上取決於你想看到什麼樣的行爲。我猜你想要的是爲標籤和Leds準確地保持它們的位置,並保持它們的大小。

發生的事情是網格佈局正在調整窗口的大小(如按鈕),但左對齊將控件粘在左側,即空間。

首先,刪除gl-> setAlignment(Qt :: AlignLeft)行。

其次,你要確保你在你的QLabels和你的QLeds上正確設置sizePolicy,否則你的QLeds會開始水平調整大小。你想要的是一個固定的水平尺寸政策。這裏有一個例子:

QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); 
sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth()); 
label->setSizePolicy(sizePolicy); 

一個完全不同的方式來完成同樣的事情將是你的水平佈局添加到setStretch()一串電話。但是你必須爲你想要擴展的佈局中的每一列執行此操作。基本上每個按鈕都有,但跳過第一列中的網格佈局。像這樣...

lo->setStretch(1, 1); // Column 1 is your first button 
lo->setStretch(2, 1); 
... 
lo->setStretch(19, 1)l // 19 columns in total, 15 buttons plus 4 spacing. 
+0

非常感謝 – Franco 2017-07-12 22:45:22