Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Multiline Text in QListView

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.01.2004
    Beiträge
    74

    Multiline Text in QListView

    Hallo.

    Ich habe ein QListView mit 2 Spalten. Die erste Spalte soll eine feste Breite haben. Die zweite soll sich je nach größe des Fensters vergrößern oder verkleinern:

    listView2->setResizeMode(QListView::LastColumn);

    In dieser 2. Spalte habe ich ein QListViewItem mit:

    item->setMultiLinesEnabled(TRUE);

    Ich dachte dass bei diesen Einstellungen der Text in "item" automatisch einen Zeilenumbruch bekommt, wenn das Fenster zu klein wird. Leider klappt das aber nicht. Statt dessen kommt am Ende des Textes ein "..." und dann is Schluss mit Text.

    Auch ein:

    listView2->setHScrollBarMode(QScrollView::AlwaysOff);

    bringt nicht den gewünschten Erfolg.
    Hat jemand eine Idee wie ich diesen automatischen Zeilenumbruch realisieren kann?

    Gruß
    doitux
    System:
    gentoo-linux
    KDE 3.5.1
    qt-3.4.3

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du könntest folgendes versuchen:

    ein eigenes ListViewItem ableiten, paintCell für die gewünschte Spalte überschreiben.

    Dort dann mit QSimpleRichText den Text umbrechen lassen (ich glaube die Klasse kann das) und auch zeichnen lassen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.01.2004
    Beiträge
    74
    Hi anda_skoa

    Ich hab das mal so probiert:

    Code:
    void MyReportItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment )
    {
    
    	if (column == 1) {
    		
    		QFont f1( "Helvetica [Cronyx]" ); 
    		QPainter painter;
    		QSimpleRichText myrichtext( reporttext, f1 );
    		int margin = 0;
    		QRect view( 0, 0, 0, 0 );
    		QColorGroup colorgroup;       	
    		
    		myrichtext.draw( &painter, margin, margin, view, colorgroup);
    
    	}
    Wenn die Funktion aufgerufen kommt folgende Meldung aber die Liste bleibt leer:

    QPainter::setWorldMatrix: Will be reset by begin()
    QPainter::setWorldMatrix: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setWorldMatrix: Will be reset by begin()
    QPainter::setWorldMatrix: Will be reset by begin()
    QPainter::setFont: Will be reset by begin()
    QPainter::setWorldMatrix: Will be reset by begin()
    QPainter::setWorldMatrix: Will be reset by begin()
    QPainter::setPen: Will be reset by begin()

    usw.

    Hast du ne Idee woran das liegen kann?
    System:
    gentoo-linux
    KDE 3.5.1
    qt-3.4.3

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Keinen neuen Painter benutzen, du hast ja einen als Parameter der Funktion

    Das Rechteck mußt du auch entsprechend der Zelle anpassen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.01.2004
    Beiträge
    74
    Code:
    void MyReportItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment )
    {
    
    	if (column == 1) {
    		
    		QFont f1( "Helvetica [Cronyx]" ); 
    		
    		QSimpleRichText myrichtext( reporttext, f1 );
    		int margin = 0;
    		QRect view( 0, 0, 200, 10 );
    		QColorGroup colorgroup;       	
    		
    		myrichtext.draw( p, margin, margin, view, colorgroup);
    
    	}
    So hab ich es jetzt probiert.
    Hin und wieder sehe ich auch was flackern. Aber das mit dem Zeilenumbruch will wohl nicht so ;-(

    Gruß
    doitux
    System:
    gentoo-linux
    KDE 3.5.1
    qt-3.4.3

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eventuell mußt du das Rechteck auch in die Richtige Position schieben.

    Falls du übrigens den normalen Font benutzen willst, bekommst du ihn über p->font()

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •