qtforum.de Foren-Übersicht

QtWikiNeu: Zum Wiki  Qt-DocsQt-Dokumentation  Qt-PagesAndere Seiten zu Qt   
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[gelöst] Buttongröße ändern

 
Neues Thema eröffnen   Neue Antwort erstellen    qtforum.de Foren-Übersicht -> Qt Jambi
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
krone



Anmeldedatum: 11.11.2009
Beiträge: 12

BeitragVerfasst am: Di Jan 26, 2010 14:56    Titel: [gelöst] Buttongröße ändern Antworten mit Zitat

Hallo zusammen,

ich benutze PushButtons als Balken eines Diagramms und würde diese gerne zur Laufzeit ändern bzw. die Breite der Buttons.

ich habe mich shcon mit setgeometry, update, updategeometry, setminsize, setmaxsize probiert aber kam zu keinem Erfolg.
Es gibt kein Layout in dem Widget, wo die Buttons angzeigt werden.

Ich hoffe mir kann jemand helfen


Zuletzt bearbeitet von krone am So Jan 31, 2010 15:55, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
franzf



Anmeldedatum: 31.05.2006
Beiträge: 1860

BeitragVerfasst am: Di Jan 26, 2010 15:03    Titel: Antworten mit Zitat

Code:
button.resize(newSize);


// edit:
oops, ist ja java, da gibts keinen operator->
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
krone



Anmeldedatum: 11.11.2009
Beiträge: 12

BeitragVerfasst am: Di Jan 26, 2010 15:42    Titel: Antworten mit Zitat

hab ich auch schon probiert.

ging ebenfalls nicht
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
franzf



Anmeldedatum: 31.05.2006
Beiträge: 1860

BeitragVerfasst am: Di Jan 26, 2010 16:03    Titel: Antworten mit Zitat

Dann zeig bitte mehr Code. Denn ein nicht gelayouteter PushButton lässt sich ohne weiteres resize()en.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
krone



Anmeldedatum: 11.11.2009
Beiträge: 12

BeitragVerfasst am: Di Jan 26, 2010 16:20    Titel: Antworten mit Zitat

Code:

public class ButtonBar extends QPushButton

        private int width;
   private int height;
   private int x;
   private int y;
   private int placedVotesPerson;
   private int selectionID;
   private int pollID;
   private int place;
   private BarChart parent; [public class BarChart extends QWidget]



Code:
/**
    * Updates color and size of bar
    */
   private void updateColorAndSize() {
      setGeometry(x, y + (place * 50), width, height);
      resize(width, height);

      // setFixedSize(width, height);
      /** set color of button */
      if (Data.getDataInstance().getListPoll(pollID).getHead()
            .isLimitValternative()
            && DataManager.sumVotesPerAlternative(pollID, selectionID,
                  Data.listType) >= Data.getDataInstance().getListPoll(
                  pollID).getSelection(selectionID).getMaxPoints()) {
         // max number of votes per alternative is set and max number of
         // votes for this alternative reached
         setStyleSheet("background-color: red"); //$NON-NLS-1$
      } else if (Data.getDataInstance().getListPoll(pollID).getHead()
            .isLimitValternative()) {
         // max number of votes per alternative is set and max number of
         // votes for this alternative is not reached
         setStyleSheet("background-color: rgb(50,205,50)"); //$NON-NLS-1$
      } else if (placedVotesPerson == 0) {
         // limit for alternatives is not set and user did not voted for
         // alternative
         setStyleSheet("background-color: rgb(250,160,50)"); //$NON-NLS-1$
      } else if (placedVotesPerson > 0) {
         // limit for alternative is noet set and user voted for alternative
         setStyleSheet("background-color: rgb(30,144,255)"); //$NON-NLS-1$
      }
      if (data.getListPoll(pollID).getMembers().get(
            data.getListPoll(pollID).getMember(data.getUser().getUserID()))
            .getPoints() == -1)
         setStyleSheet("background-color: rgb(26,26,26)");

      update();
      updateGeometry();
   }



Code:

/**
    * draw bar
    */
   @Override
   public void drawBar(QPainter painter) {
      // Draw Name of Alternative
      painter.setFont(new QFont("arial", 10)); //$NON-NLS-1$
      painter.setPen(QColor.black);
      painter.drawText(x + 5, y - 2 + (place * 50), getDescription());

      painter.drawRoundedRect(x, y + (place * 50) /* +(i*50) */, width,
            height, 10.0, 1.3);

      updateColorAndSize();

      // Draw Sum Votes for Alternative
      painter.setPen(QColor.darkCyan);
      painter.drawText(x + width + 5, y + height - 2 + (place * 50),
            "" + getSumVotes()); //$NON-NLS-1$

      parent.update();
      parent.updateGeometry();
   }



Die Größe width müsste eignetlich richtig sein, da wenn ich zusätzlich noch den button malen lasse, das richtige rauskommt. Nur der Button ändert seine Größe nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
krone



Anmeldedatum: 11.11.2009
Beiträge: 12

BeitragVerfasst am: Sa Jan 30, 2010 11:51    Titel: Antworten mit Zitat

Weiß niemand einen Rat für mich? Sad

Beispielcode würde mich auch weiterbringen. Auch wenns nciht in java ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
franzf



Anmeldedatum: 31.05.2006
Beiträge: 1860

BeitragVerfasst am: So Jan 31, 2010 10:05    Titel: Antworten mit Zitat

Reduzier deinen Code, so dass du durchblickst Wink
Denn ein resize funktioniert absolut problemlos!
Code:
#include <QWidget>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QHBoxLayout>

class Widget : public QWidget
{
    Q_OBJECT
    QPushButton *btn;
public:
    Widget() {
        QWidget* view = new QWidget(this);
       
        btn = new QPushButton("Resize me!", view);
       
        QSlider *heightSlider = new QSlider(Qt::Horizontal, this);
        heightSlider->setMinimum(btn->height());
        heightSlider->setMaximum(btn->height()*4);

        QSlider *widthSlider = new QSlider(Qt::Horizontal, this);
        widthSlider->setMinimum(btn->width());
        widthSlider->setMaximum(btn->width()*4);
       
        QHBoxLayout* sliderLayout = new QHBoxLayout;
        sliderLayout->addWidget(heightSlider);
        sliderLayout->addWidget(widthSlider);
       
        QVBoxLayout *mainLayout = new QVBoxLayout(this);       
        mainLayout->addWidget(view);
        mainLayout->addLayout(sliderLayout);
       
        connect(heightSlider, SIGNAL(sliderMoved(int)), this, SLOT(changeHeight(int)));
        connect(widthSlider, SIGNAL(sliderMoved(int)), this, SLOT(changeWidth(int)));
       
        resize(500, 200);
    }
   
public slots:
    void changeHeight(int val) {
        btn->resize(btn->width(), val);
    }
    void changeWidth(int val) {
        btn->resize(val, btn->height());
    }
};   

Ist C++, da ich hier kein QtJambi installiert hab. Das funktioniert problemlos.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
krone



Anmeldedatum: 11.11.2009
Beiträge: 12

BeitragVerfasst am: So Jan 31, 2010 15:54    Titel: Antworten mit Zitat

Danke, ich habs jetzt hinbekommen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    qtforum.de Foren-Übersicht -> Qt Jambi Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum