QComboBox设置下拉列表行宽度c++实现
时间: 2023-09-19 17:10:54 浏览: 54
以下是使用C++实现的QComboBox设置下拉列表行宽度的示例代码:
```cpp
#include <QComboBox>
#include <QStyledItemDelegate>
#include <QStyleOptionViewItem>
class CustomDelegate : public QStyledItemDelegate
{
public:
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
// 设置行宽度为200像素
QStyleOptionViewItem opt = option;
opt.rect.setWidth(200);
QStyledItemDelegate::paint(painter, opt, index);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QComboBox comboBox;
comboBox.addItem("Option 1");
comboBox.addItem("Option 2");
comboBox.addItem("Option 3");
CustomDelegate delegate;
comboBox.setItemDelegate(&delegate);
comboBox.show();
return app.exec();
}
```
在这个例子中,我们自定义了一个委托类CustomDelegate,并重写了它的paint方法。在paint方法中,我们通过设置opt.rect.setWidth(200)来设置每一行的宽度为200像素。最后,将这个委托设置给QComboBox的setItemDelegate函数即可。
注意:这个例子中的行宽度是固定的,如果你需要根据内容自适应宽度,可以使用QFontMetrics类来计算文本宽度。