Qt:如何使用 QComboBox "grey out" 选项(并使其不可选择)

Qt: How to "grey out" options using QComboBox (and make unselectable)

我正在使用 Qt Creator 构建一个 GUI,并且我有一个使用 QComboBox 和 X 许多不同选项的下拉菜单。例如,我的下拉菜单有“Apple”、“Pear”、“Cookie”、“Banana”。苹果是首选(在顶部),然后是梨,依此类推。

使用 QComboBox,如何使最后两个选项“Cookie”和“Banana”“变灰”。我希望用户仍然能够看到选项,但不能 select 它们。几乎就像一个“即将推出的功能”。

我已经尝试了下面的解决方案,但我遇到了问题。感谢您的帮助,因为我对 Qt 及其工作原理还很陌生。

void QComboBox::setItemData(int = 3,false, Qt::UserRole - 1);
void QComboBox::setItemData(int = 4,false, Qt::UserRole - 1);

objectName 是:comboBox_4 并且是一个 QComboBox。我把它放在我项目的 mainwindow.ui 中,上面的代码是我在 mainwindow.cpp

中写的

我正在寻找最简单的实现方式,而不是解决方法。因此,我可以使用 QComboBox 从下拉菜单中轻松地将某些内容“灰色化”。

@pptaszni 是正确的。测试了下面的方法,有效。

使用以下内容,我可以 'grey-out' 选项并在 QComboBox 中制作 un-selectable。

_ui->comboBox_4->setItemData(3, false, Qt::UserRole -1);

在我的 mainwindow.cpp 中 - 代码如下,它允许我选择我想要的 'row' 变灰。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->comboBox_4->setItemData(2, false, Qt::UserRole -1);
    ui->comboBox_4->setItemData(3, false, Qt::UserRole -1);
}

请注意,在上面的代码中,'comboBox_4' 指的是我的 objectName。不要忘记更改它。