是否可以仅突出显示当前 QComboBox 选择的文本?

Is it possible to highlight only the text of the current QComboBox Selection?

我只想突出显示当前 QComboBox 选择的文本而不是整个区域

直到向下箭头。为了更好地说明我想要这样的东西:

而不是这个:

这可能吗?如果是如何?我在网上搜索,尝试了一些方法,但无法正常工作。有什么想法或建议吗?提前致谢。

您所描述的是 editable 组合框的默认行为。在这种情况下,只需设置

QComboBox* box = new QComboBox();
box->setEditable(true);

如果你不希望你的QComboBox是可编辑的,那就不直观了,但是你想做的还是可以完成的。

如果您将 QComboBox 设置为可编辑,同时将基础行编辑设置为只读,那么突出显示将看起来像您的图片,但是不会有任何光标,用户将无法编辑组合框项目。这是一个例子:

QComboBox* box = new QComboBox();
box->addItems(QStringList() << "None (Min Profit)" << "All (Max Profit)");
box->setEditable(true);
box->lineEdit()->setReadOnly(true);

// c++11 style, but this can also be done using SIGNAL(...) and SLOT(...)
connect(box, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), [box]
{
    box->lineEdit()->selectAll();
});

这是结果的图片(我在 Windows 10,所以样式有点滑稽)

我的 2 美分:虽然可以做到,但对于不可编辑的项目,默认的 Qt 突出显示方案对您的用户来说可能更直观。