代码之家  ›  专栏  ›  技术社区  ›  mj1261829

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

  •  1
  • mj1261829  · 技术社区  · 8 年前

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

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

    而不是这样: enter image description here

    这可能吗?如果是,如何?我在网上搜索,尝试了一些东西,但都没能成功。有什么想法或建议吗?提前谢谢。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Nicolas Holthaus    8 年前

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

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

    如果你不想 QComboBox 如果是可编辑的,那么它是不直观的,但是你想做的事情仍然可以完成。

    如果将 Q组合框 为了可编辑, 同时将基础行编辑设置为只读 ,则突出显示将与图片中的类似,但不会有任何光标,用户将无法编辑组合框项。下面是一个例子:

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