Checkbox im View nimmt zuviel Platz ein

Alles rund um die Programmierung mit Qt
Antworten
Spoosie
Beiträge: 2
Registriert: 14. Juli 2009 12:02

Checkbox im View nimmt zuviel Platz ein

Beitrag von Spoosie »

Hallo zusammen,

ich habe per Flag ItemIsUserCheckable und Role CheckStateRole eine Checkbox in einen Tableview integriert. Das funktioniert auch alles wunderbar, doch erscheibt neben der Box noch ein Feld wo der eigentliche Content in Form von "true/false" steht.
Wenn ich diesen nun über die DisplayRole im Data "filtere" bleibt ein unschönes Feld über. (rote Box) Was sich auch irgendwie nicht abschalten lässt.

Kann jemand helfen?

Vielen Dank
Dateianhänge
2009-07-14_1431.png
2009-07-14_1431.png (5.02 KiB) 3212 mal betrachtet
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Und der Titel darf keinen Platz brauchen?
Spoosie
Beiträge: 2
Registriert: 14. Juli 2009 12:02

Beitrag von Spoosie »

Doch, darf er schon. Nur wenn ich den Inhalt der Zelle zentriere ist dieser Bereich immer noch da und die Checkbox nicht in der Mitte. :(
Auch wenn der Header keinen Text beinhaltet verhält sich das so.

Dieser Bereich (roter Rahmen) ist im übrigen selektierbar.
russkij
Beiträge: 57
Registriert: 14. Dezember 2005 11:57

Beitrag von russkij »

-->Dieser Bereich (roter Rahmen) ist im übrigen selektierbar.

er ist nicht nur selectierbar, er ist auch editierbar, es sei denn, du hast ihm gesagt, dass er nicht editierbar sein soll :-)

habe auch mal versucht, die checkbox mittig zu bekommen, habs aber leider nicht geschafft.

würde mich auch interessieren.

den rahmen, der neben der checkbox bei selection gemahlt wird, der ja eigentlich den text umrahmen soll, habe ich so beseitigt:

Code: Alles auswählen

void CheckboxDelegate::drawFocus ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect )const
{
   QRect rec = rect;
   if(m_parentTable)
   {
      CheckBoxItem *checkItem = dynamic_cast<CheckBoxItem*>(m_parentTable->currentItem());
      if(checkItem)
      {
         //damit der rahmen nicht nur um den text geht sondern auch um die checkbox,
         //schaut schöner aus
         int w = m_parentTable->horizontalHeader()->sectionSize(checkItem->column());
         rec.setLeft(rect.right() - w + 2);
      }
   }
   QItemDelegate::drawFocus(painter, option, rec);
}
zentireren würde man wahrscheinlich mit paint hinbekommen, hab aber noch nicht probiert.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Code: Alles auswählen

header()->setResizeMode(0, QHeaderView::Fixed);
header()->resizeSection(0, myColumnSize);
Antworten