Code: Alles auswählen
QIcon icon;
QPainter *painter = new QPainter();
painter->drawPixmap(0,0,QPixmap(":/Icons/ArrowUp.png"));
icon.paint(painter,0,0,512,512);
action->setIcon(icon);
Code: Alles auswählen
QIcon icon;
QPainter *painter = new QPainter();
painter->drawPixmap(0,0,QPixmap(":/Icons/ArrowUp.png"));
icon.paint(painter,0,0,512,512);
action->setIcon(icon);
Code: Alles auswählen
// leeres Icon erstellen
QIcon icon;
// neuen QPainter erstelen
QPainter *painter = new QPainter();
// auf einen Painter welcher kein QPaintImage hat ein QPixmap malen
painter->drawPixmap(0,0,QPixmap(":/Icons/ArrowUp.png"));
// Auf den immernoch leeren QPainter ein leeres QIcon malen
icon.paint(painter,0,0,512,512);
// der QAction ein leeres Icon geben
action->setIcon(icon);
Ein Icon besitzt auch nur das Bild und keinen Hintergrund! Das was die Umrandung zeichnet ist die Buttonklasse selber! Deshalb ist das Einzige was du tun kannst eine eigene Button-Klasse erstellen, die so ausschaut wie du willst.Nvidia hat geschrieben:aber ich kann doch einfach das Pixmap zeichnen lassen, da diese ja keinen hintergrund besitzt sondern nur das Bild
Code: Alles auswählen
#ifndef LINES_H
#define LINES_H
#include <QPushButton>
class Lines : public QPushButton
{
Q_OBJECT
public:
Lines(QWidget *parent = 0);
protected:
void paintEvent(QPaintEvent *event);
};
#endif
Code: Alles auswählen
#include "mainwindow.h"
#include <QPainter>
Lines::Lines(QWidget *parent)
: QPushButton(parent)
{
}
void Lines::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
if(!isDown())
painter.drawImage(QRect(0,0,48,48),QImage(":/Power.png"));
else
painter.drawImage(QRect(0,0,256,256),QImage(":/Power.png"));
}
Code: Alles auswählen
#include <QPushButton>
#include <QWidget>
#include <QHBoxLayout>
#include <QPainter>
#include <QPaintEvent>
#include <QImage>
#include <QApplication>
class Button : public QPushButton {
void paintEvent(QPaintEvent* e) {
QPainter painter(this);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
if(!isDown())
painter.drawImage(QRect(0,0,48,48),QImage("./Power.png"));
else
painter.drawImage(QRect(0,0,256,256),QImage("./Power.png"));
}
public:
Button(QWidget* parent=0)
: QPushButton(parent)
{}
};
int main(int argc, char** argv) {
QApplication app(argc, argv);
QWidget w;
QHBoxLayout *l = new QHBoxLayout(&w);
Button* b = new Button;
b->setText("Hallo");
l->addWidget(b);
b = new Button;
b->setText("Mehr Hallo");
l->addWidget(b);
b = new Button;
b->setText("Oh Gott, was ist hier los!!!");
l->addWidget(b);
b = new Button;
b->setText("Schluss!");
l->addWidget(b);
w.show();
return app.exec();
}Code: Alles auswählen
QToolButton * tb = new QToolButton;
tb->setAutoRaise(false);
tb->setIcon(QIcon(":/Power.png"));
Code: Alles auswählen
painter.drawImage(QRect(0, 0, 48, 48),QImage(":/Power.png"));
painter.drawImage(QRect(0, 0, 256, 256),QImage(":/Power.png"));