QTableWidget: Kolonnen größenveränderbar und beweglich machen



  • Hallo,

    Ich suche folgendes Verhalten:

    • [] Kolonnen sollen vom User größenveränderbar sein

    Ist der letzte Punkt irgendwie machbar? Also man soll mit der Maus die Kolonnen klein/groß ziehen können? Dabei soll aber automatisch gestretcht werden, also es soll kein leerer Platz auf der rechten Seite entstehen, wenn man eine Kolonne kleiner macht.

    Also: Kolonne 1 kleiner machen -> Kolonne 2 übernimmt den Platz der übrig bleibt?



  • Ja, geht alles. Du kannst auf jeden Spalte den Resize Mode setzen. Wenn das nicht reicht, kannst du die Größen notfalls auch alle selber berechnen.



  • Ich mach

    horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
    

    aber dann bleibt rechts freier Platz übrig, was nicht soll.

    Mit

    horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
            horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
    

    löst sich das QHeaderView::Interactive wieder auf.

    Wie kann ich beides kombinieren?



  • column schrieb:

    Wie kann ich beides kombinieren?

    Das müsste gehen. Sind schon genügend Spalten drin? Evtl. mit der Reihenfolge spielen.

    Ansonsten gibts das Signal sectionResized, du kannst darauf reagieren, und die anderen resizen.



  • Das da

    horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
            horizontalHeader()->setStretchLastSection(true);
    

    funktioniert, ist aber nicht ganz das, wonach ich suche.

    Sind schon genügend Spalten drin?

    Jo.

    Evtl. mit der Reihenfolge spielen.

    Opposite result.

    Ansonsten gibts das Signal sectionResized, du kannst darauf reagieren, und die anderen resizen.

    Aber wenn ich dann setSectionResizeMode() mache, mach ich QHeaderView::Interactive wieder kaputt.

    Ich suche ein stretch first section + resize next sections to contents + interactive.



  • column schrieb:

    Aber wenn ich dann setSectionResizeMode() mache, mach ich QHeaderView::Interactive wieder kaputt.

    Ich suche ein stretch first section + resize next sections to contents + interactive.

    Ja, setz alle auf Interactive und berechne die Größe selber, ist ja nicht schwer.



  • Warum gibt es kein stretchNthSection()?
    *sich beklag*

    Nein, dann lass ich es mal so, wie es ist.
    Ich habe keinen Schimmer davon, wie ich nun die Größe selber berechne. Und setze.



  • column schrieb:

    Warum gibt es kein stretchNthSection()?
    *sich beklag*

    Nein, dann lass ich es mal so, wie es ist.
    Ich habe keinen Schimmer davon, wie ich nun die Größe selber berechne. Und setze.

    Qt ist bei weitem nicht perfekt, da fehlt schon einiges und vieles hat man nicht so im Griff, wie man das gern hätte. Ich kenne nur kein besseres Framework.

    Die Berechnung ist doch trivial. Du kennst die Gesamtbreite des Widgets, du weißt, dass du die erste Spalte stretchen willst. Also ist die Breite der ersten Spalte = (Gesamtbreite - Summe der Breiten der restlichen Spalten).


Log in to reply