2017-05-09 26 views
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(); 
} 
+1

[複選框組合框?]的可能重複?(http://stackoverflow.com/questions/8422760/combobox-of-checkboxes) – mohabouje

+0

您必須繼承自己的QItemDelegate並實現繪製事件功能。請參閱:http://stackoverflow.com/questions/8422760/combobox-of-checkboxes – mohabouje

回答

0

不,你不能直接這樣做。但是,您可以在點擊標籤後明確指定標籤的行爲。不要從另一個問題複製代碼,你可以做類似於this question