2017-07-18 27 views
0

我遇到了這個問題,我有兩個QComboBox。一個是可編輯的。另一個是不可編輯的。在QComboBox中設置listView項目的幾何圖形

我想爲它們設置相同的樣式表。最好像編輯中的那個一樣。如何設置位置,使物品在箭頭下方。

CSS只是一種方法。實際上,它是默認的Editable和Non-editable QComboBox.Apparently的內部屬性,可編輯框的第一行是用於添加新項目(QLineEdit),這是我們在不可修改的(ofcourse!)中沒有的,它改變了視圖。我有這種方法,如果不知何故,我發現內部QComboBox的構造函數和Qt用於其默認QComboBox的屬性,我可以自定義它。請幫助我,如果我能找到使用相同的

的樣式表如下:

ui->editable->setStyleSheet("QComboBox:editable{height : 30px; background-color:white; color:black; border-radius: 2px;padding-left:1px; }QListView{background-color:white; selection-background-color:#3C8C3F; height : 30px;padding-bottom:7px;padding-top:7px;}"); 

- >非編輯

QListView * listView = new QListView(ui->demoEdit); 
     ui->demoEdit->addItem("foo"); 
     ui->demoEdit->addItem("bar"); 
     ui->demoEdit->addItem("foobar"); 
     ui->demoEdit->addItem("fooooo"); 




     listView->setStyleSheet("QListView{background-color:white; selection-background-color:#3C8C3F;border-radius:0px;height :30px;padding-bottom:10px;padding-top:10px;padding-left:40pt;margin-top:30px;}"); 

     ui->demoEdit->setView(listView); 

ui->demoEdit->setStyleSheet("QComboBox{background-color:white; color:black;height:30px;width:20px;border:0px;}"); 

編輯ComboBox: - 第1項開始的箭頭下方。

非可編輯組合框: - 第一項以箭頭開頭。

THIS IS EDITABLE

THIS IS NON-EDITABLE

我工作在Mac上。

+0

對於我來說,'ui-> editable'的CSS工作正常,列表視圖從組合框下面開始。儘管我沒有完全相同的外觀(Windows,Qt9.1),所以也許你有其他一些CSS與你在這裏複製的CSS衝突。 'ui-> demoEdit'的CSS在第一項之前的列表視圖中留下了一個大的空白,所以它不能正常工作。可編輯或不可編輯的組合框對我所測試的CSS行爲沒有影響。 – ymoreau

+0

對不起。我原諒我提到我正在使用mac。這是問題發生的地方。 – Shachi

+0

Anway,我會建議使用完全相同的CSS(如果不是真的需要,不要自己創建QListView)以避免差異。 – ymoreau

回答

0

的問題是,您使用的填充,

ui->editable->setStyleSheet("...QListView{padding-bottom:7px;padding-top:7px;}"); 

listView->setStyleSheet("QListView{...padding-bottom:10px;padding-top:10px;padding-left:40pt;margin-top:30px;}"); 

不同的參數,把相同的填充參數

+0

它不是關於填充。讓我換個問題,以便更好地理解 – Shachi

+0

好的,下面是你的例子[QComboBox模型](https://habrahabr.ru/post/215289/) –

+0

我用你的例子,我有另一個結果.. –

0

我找到了一個解決這個。

我將不可編輯的QComboBox選中爲可編輯,然後將QComboBox的QLineEdit設置爲ReadOnly。

1. ui->nonEditComboBox->setEditable(true); 

2. QLineEdit *mylineEdit = ui->nonEditComboBox->lineEdit(); //make object of QLineEdit 
    mylineEdit->setReadOnly(true); 
相關問題