Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: QT Statusbar verwenden ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27

    QT Statusbar verwenden ?

    Habe jetzt endlich ne statusBar, nur wie kann ichd er sagen,wenn ich der z.b. mit


    statusBar()->message(date); gebe, wobei date ne variable vom typ string ist, das er das nicht ganz links macht, sondenr da wo ich will ?


    Jetzt schriebt er alles links hin,und überschreibt halt das was vorher da stand...
    Geändert von ramonl (15-11-2004 um 18:19 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.11.2004
    Beiträge
    10
    Zitat Zitat von ramonl
    Habe jetzt endlich ne statusBar, nur wie kann ichd er sagen,wenn ich der z.b. mit


    statusBar()->message(date); gebe, wobei date ne variable vom typ string ist, das er das nicht ganz links macht, sondenr da wo ich will ?
    stand...
    Leite eine Class von QStatusBar ab. Da implementierst du einfach die Methode neu. Außerdem kannst du ein QWidget (z.B. QLabel) hinzufügen und diesem einen Text zuweisen. Siehe dazu:

    http://doc.trolltech.com/3.3/qstatusbar.html#addWidget

    Ganz bequem wäre es, wenn du dies kombinierst: Klasse ableiten mit einem Konstruktor in dem du mittels addWidget() die Strings hinzufügst. Dann Funktionen hinzufügen die heißen: setTextLinks( const wxString& text) und das gleiche für rechts.

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    na, habs jetzt doch geschafft der statusbar messegas zu geben,auch an die gwünschte position und so...

    bekomme nur den frame nicht weg, schon alles probiert, mit plain und sowas, will aber gar keinen rahmen haben bei den einzelnen feldern der statusbar, sind alles QLabels.

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das dürfte entweder Margin oder Spacing des Statusbar Layouts sein.

    Kannst ja mal versuchen, die beiden Werte zu ändern.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    nee bei statusbar (siehe docu) kann man nicht an marging oder spacing drehen....


    man ,laut docu wnen ich meine labels so definiere:


    message->setFrameStyle(QFrame::MenuBarPanel | QFrame::Plain);

    müsste er kein rahmen machen, wenn ich andere sachen reinschriebe macht er ja auch mal dicken rahmen,mal 3d,je nach dme ahlt,aber nicht, das nix da is, hat jemand noch ne idee ?


    Raff ich nicht das es laut docu so ja gehen müsste...

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von ramonl
    nee bei statusbar (siehe docu) kann man nicht an marging oder spacing drehen....
    Ich sagte ja am Layout des StatusBar, nicht am StatusBar.
    Die Widgets im StatusBar sind unter an Sicherheit grenzenter Wahrscheinlichkeit in einem Layout.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    also, ich ahbe QLabels, da gehts ja offenbar nicht,siehe mein cod emit QFrame, und StatusBar kommt von QWidget,da i nix mit margin...

    hab echt keine idee mehr...

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    QLayout::setMargin
    QLayout::setSpacing

    QWidget::layout()

    class QStatusBar : public QWidget

    Soweit die Information aus der Qt Doku.

    Könnte man also folgendes Versuchen

    Code:
    QStatusBar* b = statusBar();
    QLabel* label = new QLabel("Test", b);
    b->addWidget(label);
    if (b->layout() != 0)
        b->layout()->setMargin(0);
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    das ja auch schon wieder anders:

    bei mir gabs ja schon direkt eine statusBar(), damit arbeite ich auch.

    mach das z.b. :

    message = new QLabel ("message", statusBar() );

    (message im header als QLAbel* angelgelt)

    ...

    statusBar()->addWidget (message , 1, TRUE);


    ..... kommwn noch andere,deswegen 1, für positionierung.



    so,wenn ich jetzt statsusBar()->layout()->setMargin(0) aufrufe,kennt er setMargin nicht.

  10. #10
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von ramonl
    so,wenn ich jetzt statsusBar()->layout()->setMargin(0) aufrufe,kennt er setMargin nicht.
    Äußerst eigenartig.
    Vielleicht hast du dich beim include des qlayout.h verschrieben?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  11. #11
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    hatte es nicht included,jetzt läuft er damit,aber keine verbesserung des problems.
    Geändert von ramonl (16-11-2004 um 19:09 Uhr)

  12. #12
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, vielleicht spacing auch noch auf 0 setzen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  13. #13
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    nee bringt auch nix...

    kann doch nicht sein,oder ? habe ja jetzt irgendwie alles schon probiert...

    mit jeweils rahmen (gibt zwar auch schöne) sieht es aber blöder aus, wollte ja keien rahmen und über der statusbar habe ich einfach ne waagerechte linie....


    hab gerade mal ein textLabel,is ja auch QLabel im QT designer auf meien rnormalen oberfläche,also oberhalb der statusbar hingepackt,und da zeigt er es im prog richtig an, und wenn ich dieses textLabel einfach an die stausbar adde, dann macht er dort keinen rahmen, also liegt es nicht an der statusbar, sondern wohl irgendwie am QLAbel...


    abe rich hab doch frame shape und shadow auf noFrame und plain gesetzt, genau wie das neue qLabel im QT Designer als attribute hat...

    jetzt blickst wahrscheinlich ga rnicht mehr durhc,oder ?

  14. #14
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich hab im Source von QStatusBar nachgesehen und bin mir jetzt ziemlich sicher, dass es das Layout ist.

    Allerdings kann das ein verschachteltes Layout sein, wenn das Fenster diese SizeGrip Widget im rechten unteren Eck hat.
    Dann bringt es leider nix, am äußeren Layout Margin und Spacing zu ändern, weil die Widgets im inneren Layout eingebettet sind.

    Möglicherweise könnte man das noch hintricksen, aber ich denke das bringt's nicht.
    Üblicherweise will man ja im Statusbar sehen, welche Anzeige wie weit geht.
    Wenn du das nicht willst, "vergisst" du einfach, dass es sowas wie einen Statusbar gibt.

    Stattdessen fügst du unten in deinem Widget, das du als CentralWidget setzt, ein QLabel ein und nimmst das Label und das bisherige Widget in ein vertikales Layout.
    Dann hast du immer am unteren Rand des zentralen Widgets ein QLabel mit den von dir eingestellten Eigenschaften.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  15. #15
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    ^^^ Zu deinem Trick? nen label einfach dahin machen wo sonst die StatusBar ist geht nicht, das wird nicht mit angezeigt... und wäre auch programmtechnisch sehr unschön...



    hmm, dann bin ich so langsam überfragt...

    ich brauche halt ne StatusBar, die so aussieht:

    element 1 _______________________ elemtent 2___ element3

    also 3 felder in der bar, am besten ganz ohne Rahmen um die Felder, dann kann ich nämlich über der Bar ne Linie machen, und man sieht sie, dann zwischen den Felde vllt. senkrechte Striche, aber es klappt ja nix...

    Zeige hier mal den unteren Bereich meines Programms (läuft im Vollbildmodus) und so sieht es ja wohl auch blöd aus, weil die Femster über der Bar im Hauptprogramm halt nicht bis aussen gehen, hat jemand ne Idee ?

    screenshot (die box unten is bis fast links,screenshot is bissl falsch, rechts stimmt es)
    http://www.deejay-ray.com/test.jpg

    Also entweder müssen die Umrandungen weg und nur eine linie drüber, oder man müsste angeben können, das die boxen unten nicht direkt links und rechts anfangen,aber das geht wohl noch weniger...

    was soll ich denn nun tun ?

    Hie rnochmal mein source code für das so erzeugte, damit sollte ich jetzt alles hingeschrieben habe was nötig ist, und komme trotzdem nicht weiter...


    Code:
    statusBar()->layout()->setMargin(0);
       statusBar()->layout()->setSpacing(0);
    
       currentdate=new QDate();
       QString date = currentdate->currentDate().toString();
       currenttime=new QTime();
       QString time = currenttime->currentTime().toString();
    
    
       message = new QLabel( "message ", statusBar() );
       xValue  = new QLabel( "xValue ", statusBar() );
       yValue = new QLabel( "yValue  " , statusBar());
       xValue->setFixedWidth( 100 );
       yValue->setFixedWidth( 100 );   
    
     
       
       xValue->setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
       yValue->setFrameStyle(QFrame::StyledPanel  | QFrame::Raised);
       message->setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
       yValue->setText(date);
       xValue->setText(time); 
       
    
       statusBar()->addWidget( message, 1, TRUE);
       statusBar()->addWidget( xValue , 0, TRUE);
       statusBar()->addWidget( yValue , 0, TRUE);

Lesezeichen

Berechtigungen

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