QListView Icons unterdrücken

Verschiedenes zu Qt
Antworten
N¤X
Beiträge: 77
Registriert: 21. September 2009 12:24

QListView Icons unterdrücken

Beitrag von N¤X »

Hi, ich hab ne QListView die ein Model darstellt das für die DecorationRole QIcons bereitstellt. Die Größe der angezeigten Icons will ich vom User wählbar machen aus drei Größen und der Option die Icons garnicht anzuzeigen.
Das mit den Größen tut auch wunderbar, aber wie kann ich die Icons unterdrücken? wenn ich ihre Size auf (0, 0) setze tut das zwar, bringt aber ne Debug Ausgabe vom QPainter sobald ich ein Listenelement markiere:

Code: Alles auswählen

QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::setCompositionMode: Painter not active
QPainter::end: Painter not active, aborted
Das ist jetzt nicht weiter schlimm, es tut ja und der Verbraucher sieht davon nacher nix, aber wenn das ohne murren tun würde wärs mir lieber...
Gibts da also ne elegantere Art die Icons auszublenden? Hab bei QListView sonst nix zu Icons gefunden...
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Was passiert wenn du im Model bei der DecorationRole QVariant() zurückgibst, also "nichts"?
N¤X
Beiträge: 77
Registriert: 21. September 2009 12:24

Beitrag von N¤X »

Naja, dann zeigt er halt keine Icons an und meckert auch nicht, aber um das Anzeigen/Ausblenden darüber zu steuern müsste ich erstmal die Information dazu ins Model kriegen, und das scheint mir ein bisschen umständlich. Meine Umschaltfunktion sieht bisher so aus:

Code: Alles auswählen

void MyWidget::setIconSize(int n) {
   switch (n) {
      case 1:
         listView->setIconSize(QSize(16, 16));
         break;
      case 2:
         listView->setIconSize(QSize(24, 24));
         break;
      case 3:
         listView->setIconSize(QSize(32, 32));
         break;
      default:
         listView->setIconSize(QSize(0, 0));
         break;
   }
}
das ist ein Slot den ich an das buttonClicked(int) Signal von ner QButtonGroup gehängt hab. Wenn ich das Ein/Ausblenden jetzt über das Model mach brauch ich im Model noch ne extra Funktion setShowIcons(bool) und ne entsprechende Membervariable die das speichert, und dann müsste ich das in jedem Case entsprechend aufrufen.
Das würde funktionieren, und vllt mach ichs auch noch so, aber ich hoffe halt immernoch, dass man das auch ohne Eingriff ins Model lösen kann (keep it simple) :/
(thx für die schnelle Antwort, btw ^^)
Antworten