切换QComboBox内的复选框

时间:2017-05-09 13:45:44

标签: c++ qt checkbox combobox

我使用以下代码的改编在组合框内显示复选框。不幸的是,复选框的行为与预期完全不同。与#34;正常"相比复选框1可以单击复选框的标签以(取消)选中复选框。

有没有办法让组合框内的复选框表现得像"普通"复选框(即点击标签(un))检查它?

#include <QtGui>
#include <QApplication>
#include <QComboBox>
#include <QTableView>
#include <QVBoxLayout>
#include <QListView>
#include <QCheckBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QStandardItemModel model;
    QList<QStandardItem*> items;
    for (int i = 0; i < 5; i++) {
        QStandardItem* item = new QStandardItem(QString("Item %0").arg(i));
        item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
        item->setData(Qt::Unchecked, Qt::CheckStateRole);
        items.append(item);
    }

    model.appendColumn(items);

    QComboBox* comboBox = new QComboBox();
    comboBox->setModel(&model);

    QVBoxLayout* layout = new QVBoxLayout();
    layout->addWidget(comboBox);
    layout->addWidget(new QCheckBox("Label"));

    QWidget widget;
    widget.setLayout(layout);
    widget.show();

    return app.exec();
}

1 个答案:

答案 0 :(得分:0)

不,你不能直接这样做。但是,您可以在单击标签后明确指定标签的行为。不要从其他问题复制代码,您可以执行this question中的操作。