2015-06-13 61 views
1

我有一個QComboBox其中包含長字符串。 Long表示字符串比我的GUI上的QComboBox的寬度更寬。在這種情況下Qt會以這種方式顯示的項目:將視圖的寬度設置爲QComboBox的最長項目

QComboBox

以前我是用MatLab具有較少的用戶友好GUI但對於一個下拉列表我覺得MatLab解決方案是更好的工作:

MatLab drop-down list

有沒有簡單的方法來達到類似的結果Qt或者我必須設置用於此目的的自定義模型和視圖?

回答

2

我已經做了幾年。應該工作正常。

//determinge the maximum width required to display all names in full 
int max_width = 0; 
QFontMetrics fm(ui.comboBoxNames->font()); 
for(int x = 0; x < NamesList.size(); ++x) 
{ 
    int width = fm.width(NamesList[x]); 
    if(width > max_width) 
     max_width = width; 
} 
if(ui.comboBoxNames->view()->minimumWidth() < max_width) 
{ 
    // add scrollbar width and margin 
    max_width += ui.comboBoxNames->style()->pixelMetric(QStyle::PM_ScrollBarExtent); 
    max_width += ui.comboBoxNames->view()->autoScrollMargin(); 
    // set the minimum width of the combobox drop down list 
    ui.comboBoxNames->view()->setMinimumWidth(max_width); 
} 
+0

我會在1或2天的時間內嘗試。提前致謝。當用ui.comboBoxNames-> itemText替換NamesList時, –

+0

可以正常工作。 – FourtyTwo

相關問題