2017-05-09 9 views
0

Ich zeige Kontrollkästchen in Comboboxen an, die eine Anpassung des folgenden Codes verwenden. Leider verhalten sich die Checkboxen nicht genau wie erwartet. Im Gegensatz zu einer "normalen" Checkbox kann man nicht klicken Sie auf das Label des Kontrollkästchens, um das Kontrollkästchen (un) zu markieren.Ein Kontrollkästchen in einer QComboBox umschalten

Gibt es eine Möglichkeit, die Kontrollkästchen innerhalb der Comboboxen sich genau wie eine "normale" Checkbox zu verhalten (d. H. Klicken auf das Label (un-) prüft es)?

#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

Mögliches Duplikat von [ComboBox von CheckBoxes?] (Http://stackoverflow.com/questions/8422760/combobox-of-checkboxes) – mohabouje

+0

Sie müssen Ihre eigene QItemDelegate ableiten und die Paint-Event-Funktion implementieren. Siehe: http://stackoverflow.com/questions/8422760/combobox-of-checkboxes – mohabouje

Antwort

0

Nein, das geht nicht direkt. Sie können jedoch das Verhalten des Labels nach dem Klicken explizit angeben. Um den Code nicht von einer anderen Frage zu kopieren, können Sie etwas wie in this question tun.

Verwandte Themen