2017-07-18 92 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); 
相关问题