0
我使用以下代碼改編顯示組合框內的複選框。不幸的是,複選框的行爲並不像預期的那樣完美。與「正常」複選框相反,可以選擇而不是單擊該複選框的標籤以(取消)選中該複選框。切換QComboBox內的複選框
有沒有辦法讓組合框內的複選框的行爲與「普通」複選框完全相同(即單擊標籤(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();
}
[複選框組合框?]的可能重複?(http://stackoverflow.com/questions/8422760/combobox-of-checkboxes) – mohabouje
您必須繼承自己的QItemDelegate並實現繪製事件功能。請參閱:http://stackoverflow.com/questions/8422760/combobox-of-checkboxes – mohabouje