Anzahl Zeilen in QTableWidget fixieren

Alles rund um die Programmierung mit Qt
Antworten
Neumondnacht
Beiträge: 1
Registriert: 9. März 2013 14:22

Anzahl Zeilen in QTableWidget fixieren

Beitrag von Neumondnacht »

Hallo,

ich bin ein ziemlicher Anfänger mit Qt, deswegen schlachtet mich bitte nicht gleich falls euch meine Frage trivial erscheint. Ich habe trotz eifriger Suche weder im Forum noch in der Doku was finden können.

Mein Problem ist folgendes: Ich habe ein QTableWidget und möchte, dass man zwar in die Zellen nichts schreiben kann, aber man soll in manchen Zellen per Drag&Drop items ablegen können, in anderen hingegen nicht. Der Code, der das leisten soll, sieht so aus:

Code: Alles auswählen

   for (int i=0; i<8; i++){
        for (int j=0; j<5; j++){
            QTableWidgetItem *item = new QTableWidgetItem();
            item->setFlags(item->flags() ^ (Qt::ItemIsEditable));
            if (j<=1) item->setFlags(item->flags() ^ (Qt::ItemIsDropEnabled));
            ui->tableWidget->setItem(i,j,item);
        }
    }


D.h., die ersten beiden Spalten sollen nichts per Drag&Drop aufnehmen dürfen, die übrigen drei schon. Wenn ich aber nun versuche, ein Item per Drag&Drop über die gesperrten Zeilen zu bewegen, dann kann es zwar nicht in den bereits vorhandenen Zellen abgelegt werden, statt wird aber durch droppen zwischen zwei Zellen eine neue Zeile erzeugt, die dann das Item aufnimmt. Merkwürdigerweise geht das nicht bei den hinteren drei Zellen, d.h. in den Spalten, in denen man Items in die Zelle droppen kann, können nicht per Drag&Drop neue Zeilen erzeugt werden, was ich ehrlich gesagt etwas unlogisch finde. Meine Frage lautet nun, wie ich diese Neuentstehung von Zeilen per Drag&Drop unterbinden kann, zB indem ich die Anzahl der Zeilen meiner Table fest auf einen Wert setze (ich bin selbstverständlich auch für andere Lösungen offen). Also was ich im Endeffekt erreichen will ist:

- Droppen in mache Zellen möglich, in andere nicht (wobei die gesperrten Zellen nicht wie in meinem Beispiel unbedingt spaltenweise angeordnet sein müssen)
- Droppen in Zwischenräume komplett unmöglich

Vom Gefühl her würde ich sagen, dass es da eine relativ einfache Lösung geben muss, aber mir fehlt anscheinend das richtige Stichwort für die Suche. Also hoffe ich hier auf Hilfe und danke schonmal im Voraus.
Antworten