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

时间:2016-04-17 14:50:18

标签: qt selection highlight qcombobox selectedtext

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

直到向下箭头。更好地说明我想要这样的东西: enter image description here

而不是:enter image description here

这可能吗?如果有,怎么样?我在网上搜索,尝试过几件事,但无法使其发挥作用。任何想法或建议?提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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上,所以样式有点好笑)

Working combobox

我的2美分:虽然可以完成,但对于不可编辑的项目,默认的Qt突出显示方案可能更直观。