
|
|
|
|
 |
|
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
krone
Anmeldedatum: 11.11.2009 Beiträge: 12
|
Verfasst am: Di Jan 26, 2010 14:56 Titel: [gelöst] Buttongröße ändern |
|
|
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 |
|
 |
franzf
Anmeldedatum: 31.05.2006 Beiträge: 1860
|
Verfasst am: Di Jan 26, 2010 15:03 Titel: |
|
|
| Code: | | button.resize(newSize); |
// edit:
oops, ist ja java, da gibts keinen operator-> |
|
| Nach oben |
|
 |
krone
Anmeldedatum: 11.11.2009 Beiträge: 12
|
Verfasst am: Di Jan 26, 2010 15:42 Titel: |
|
|
hab ich auch schon probiert.
ging ebenfalls nicht |
|
| Nach oben |
|
 |
franzf
Anmeldedatum: 31.05.2006 Beiträge: 1860
|
Verfasst am: Di Jan 26, 2010 16:03 Titel: |
|
|
| Dann zeig bitte mehr Code. Denn ein nicht gelayouteter PushButton lässt sich ohne weiteres resize()en. |
|
| Nach oben |
|
 |
krone
Anmeldedatum: 11.11.2009 Beiträge: 12
|
Verfasst am: Di Jan 26, 2010 16:20 Titel: |
|
|
| 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 |
|
 |
krone
Anmeldedatum: 11.11.2009 Beiträge: 12
|
Verfasst am: Sa Jan 30, 2010 11:51 Titel: |
|
|
Weiß niemand einen Rat für mich?
Beispielcode würde mich auch weiterbringen. Auch wenns nciht in java ist. |
|
| Nach oben |
|
 |
franzf
Anmeldedatum: 31.05.2006 Beiträge: 1860
|
Verfasst am: So Jan 31, 2010 10:05 Titel: |
|
|
Reduzier deinen Code, so dass du durchblickst
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 |
|
 |
krone
Anmeldedatum: 11.11.2009 Beiträge: 12
|
Verfasst am: So Jan 31, 2010 15:54 Titel: |
|
|
| Danke, ich habs jetzt hinbekommen |
|
| Nach oben |
|
 |
|
|
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
|
|