Qt QComboBox AbstractItemView::item

Qt QComboBox AbstractItemView::item,qt,qt4,qcombobox,qtstylesheets,Qt,Qt4,Qcombobox,Qtstylesheets,有没有办法增加列在QComboBox控件中的项目的高度 我试着按照这里的建议去做,但没有成功 QComboBox QAbstractItemView::item {margin-top: 3px;} 我也试过了,还是没有结果 QComboBox QAbstractItemView::item {min-height: 20px;} 有可能在样式表级别实现这一点吗?您的样式表似乎是正确的,所以我尝试了。问题似乎类似于: QCompleter在其模型上设置一个自定义的QAbstractItemD

有没有办法增加列在QComboBox控件中的项目的高度

我试着按照这里的建议去做,但没有成功

QComboBox QAbstractItemView::item {margin-top: 3px;}
我也试过了,还是没有结果

QComboBox QAbstractItemView::item {min-height: 20px;}

有可能在样式表级别实现这一点吗?

您的样式表似乎是正确的,所以我尝试了。问题似乎类似于:

QCompleter
在其模型上设置一个自定义的
QAbstractItemDelegate
,不幸的是,此自定义项委托不继承
QStyledItemDelegate
,而只是继承
QItemDelegate
(然后覆盖
paint
方法以显示选定状态)

如果用
QStyledItemDelegate
替换默认委托,则样式表应该可以工作:

QStyledItemDelegate* itemDelegate = new QStyledItemDelegate();
combo->setItemDelegate(itemDelegate);
重要提示:如果更改模型,则会重置视图的委托,因此在调用
setModel()

后需要调用上述方法。另一种方法是:

ui->comboBox->model()->setData(ui->comboBox->model()->index(-row-,0),QSize(-width-,-height-),Qt::sizeintrole)


,其中,
-行-
是基于零的项目索引
-width-
-height-
分别代表项目宽度提示和高度提示。

QComboBox::item
对我有用

例如,当项目被禁用时,我试图更改项目的颜色,下面的代码实现了这一点

这一个不起作用:

QComboBox QAbstractItemView::item:!enabled {
    color:red;
}
相反,我使用了:

QComboBox::item:!enabled {
    color:red;
}

似乎这是实现我的要求最不痛苦的方式,谢谢你,它仍然不起作用。我照你说的做了,并尝试使用相同的样式,但它不起作用。保持不变。对于像@darkgaze这样的人,在使用此解决方案后仍有问题,请尝试使用
QComboBox::item
作为样式表中的选择器。这个答案和选择器对我很有用。这对我很有帮助-谢谢和+1!引用的文章说,这必须在调用
setModel()
后进行-如果为真,这确实值得一提。另一个建议是:如果视图中项目的高度不起作用,请尝试在
setItemDelegate
之后添加
cpp
中的项目。从QtDesigner添加项时,我遇到了样式表问题。