是否可以仅突出显示当前 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 突出显示方案对您的用户来说可能更直观。
我只想突出显示当前 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 突出显示方案对您的用户来说可能更直观。