1

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

直到向下箭头。为了更好地说明我想要这样的东西: 在此处输入图像描述

而不是这个:在此处输入图像描述

这可能吗?如果是怎么办?我在网上搜索,尝试了几件事,但无法使其工作。有什么想法或建议吗?提前致谢。

4

1 回答 1

2

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

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 突出显示方案可能对您的用户更直观。

于 2016-04-17T16:30:10.610 回答