Qt C++ QComboBox 设置项前距 - 详细教程与代码示例
"您可以使用QComboBox的setItemData()函数来设置每个项的前距。该函数的第一个参数是要设置前距的项的索引,第二个参数是要设置的前距。您可以使用QVariant类型的数据来设置前距。\n\n以下是一个示例代码,演示如何设置QComboBox的项的前距:\n\ncpp\nQComboBox *comboBox = new QComboBox;\n\n// 添加项\ncomboBox->addItem(\"Item 1\");\ncomboBox->addItem(\"Item 2\");\ncomboBox->addItem(\"Item 3\");\n\n// 设置前距\nint paddingLeft = 20; // 前距的像素值\nfor (int i = 0; i < comboBox->count(); i++) {\n QVariant paddingVariant(paddingLeft);\n comboBox->setItemData(i, paddingVariant, Qt::UserRole);\n}\n\n// 在QComboBox的paintEvent()函数中绘制前距\nvoid MyComboBox::paintEvent(QPaintEvent *event) {\n QComboBox::paintEvent(event);\n\n QPainter painter(this);\n for (int i = 0; i < count(); i++) {\n QRect itemRect = itemRect(i);\n int paddingLeft = itemData(i, Qt::UserRole).toInt();\n\n QRect textRect = itemRect.adjusted(paddingLeft, 0, 0, 0);\n painter.drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, itemText(i));\n }\n}\n\n\n在上面的代码中,我们首先使用addItem()函数添加了三个项到QComboBox中。然后,我们使用setItemData()函数为每个项设置了前距,将前距的像素值存储在Qt::UserRole角色中。\n\n最后,在QComboBox的paintEvent()函数中,我们使用QPainter绘制了每个项的文本,并在绘制文本之前使用了前距。我们通过调整文本的矩形区域来实现前距的效果。\n\n请注意,我们将上述代码放在自定义的MyComboBox类中,以便重写paintEvent()函数。如果您使用的是QComboBox类的实例对象,您需要将代码放在相应的类中,并确保正确重写了paintEvent()函数。
原文地址: https://www.cveoy.top/t/topic/pTKV 著作权归作者所有。请勿转载和采集!