Pushbutton mit Grafik versehen
Pushbutton mit Grafik versehen
Hallo,
ich habe hier folgenden Button:
/*pushbutton 3*/
QPushButton *abbruch = new QPushButton("Beenden",win);
QObject::connect(abbruch, SIGNAL(clicked()), &a, SLOT(quit()) );
dieser ist in einem QGridlayout.
Wie kann ich diesem button anstatt dem Text "Beenden" eine
Grafik möglichst einfach zuweisen? - geht das überhaupt mit QPushButton?
Danke!
ich habe hier folgenden Button:
/*pushbutton 3*/
QPushButton *abbruch = new QPushButton("Beenden",win);
QObject::connect(abbruch, SIGNAL(clicked()), &a, SLOT(quit()) );
dieser ist in einem QGridlayout.
Wie kann ich diesem button anstatt dem Text "Beenden" eine
Grafik möglichst einfach zuweisen? - geht das überhaupt mit QPushButton?
Danke!
Ja es geht auf jeden fall.
z.B so:
z.B so:
Code: Alles auswählen
QPushButton *abbruch = new QPushButton("Beenden",win);
//ein QPixmap Objekt ertellen
QPixmap myPixmap=QPixmap("'Pfad zu dem bild hier ","PNG",QPixmap::Color);
//PNG wenn bild in PNG Format vorliegt
abbruch->setPixmap(myPixmap);
QObject::connect(abbruch, SIGNAL(clicked()), &a, SLOT(quit()) );
Intel Pentium 3.2GHz |RAM-512MB|DSL|OS - Suse Linux Professional 9.1/Windows XP home |
-
- Beiträge: 70
- Registriert: 11. August 2004 07:44
- Wohnort: Bergen auf Rügen
- Kontaktdaten:
Du meinst das neben dem Farbe-Namen ein kleiner Viereck erscheint in der jeweiligen Farbe.Kann ich mit Pixmap auch Farben in einer ComboBox anzeigen?
Wenn du diese viereke als kleine bilder vorchanden hast ist das kein Problem:
Code: Alles auswählen
QPixmap rot=QPixmap("./rot.png","PNG",QPixmap::Color);
QPixmap blue=QPixmap("./blue.png","PNG",QPixmap::Color);
//usw.....
//QComboBox objekt
QComboBox *cb1=new QComboBox (this,"combo1");
//hier Einträge mit Text und Bild einfügen
cb1->insertItem (rot,"Rot",-1 );
cb1->insertItem (blau,"Blau",-1 );
//usw...
Intel Pentium 3.2GHz |RAM-512MB|DSL|OS - Suse Linux Professional 9.1/Windows XP home |
Ich hab sowas programmiert für meine KMyIRC Applikation. Ist zwar mit KDE aber kann man vom System her auch für QT einsetzen.jaegermeister hat geschrieben:Kann ich mit Pixmap auch Farben in einer ComboBox anzeigen?
Die ComboBox soll zur Auswahl von Farben dienen.
Wenn ja werd ich mir das schon suchen.
(will nur nicht umsonst suchen) ;)
Mfg jaegermeister
Das ganze ist fuer eine ListView geschrieben, aber Du kannst die Items der anderen Boxtypen auch so umsetzen.
Wichtig ist nur der "selfpainting" code.
KMIColorListViewItem.h
Code: Alles auswählen
/***************************************************************************
kmicolorlistviewitem.h - description
-------------------
begin : Fre Jun 28 2002
copyright : (C) 2002 by Stephan Hermann
email : sh@sourcecode.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef KMICOLORLISTVIEWITEM_H
#define KMICOLORLISTVIEWITEM_H
#include <qwidget.h>
#include <qlistview.h>
#include <qpainter.h>
#include <qiconset.h>
#include <kiconloader.h>
/**
*@author Stephan Hermann
*/
class KMIColorListViewItem : public QListViewItem {
public:
KMIColorListViewItem(QListView *parent=0,const QString &text="",const QString &color="#ffffff");
KMIColorListViewItem(QListViewItem *item=0,const QString &text="",const QString &color="#ffffff");
KMIColorListViewItem(QListViewItem *item=0,const QString &text="",const QColor &color=QColor("#000000"));
KMIColorListViewItem(QListView *parent=0,const QString &text="",const QColor &color=QColor("#000000"));
~KMIColorListViewItem();
/** No descriptions */
virtual void paintCell ( QPainter * p, const QColorGroup & cg, int column, int width, int align );
/** No descriptions */
virtual void setColor(const QColor &color);
/** No descriptions */
virtual void setColor(const QString &color);
/** No descriptions */
virtual void setText(int column,const QString &text);
/** No descriptions */
const QColor & getColor();
/** No descriptions */
const QString & getColorName();
private: // Private attributes
/** */
QColor columnColor;
};
#endif
Code: Alles auswählen
/***************************************************************************
kmicolorlistviewitem.cpp - description
-------------------
begin : Fre Jun 28 2002
copyright : (C) 2002 by Stephan Hermann
email : sh@sourcecode.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "kmicolorlistviewitem.h"
KMIColorListViewItem::KMIColorListViewItem(QListView *parent,const QString &text,const QString &color) : QListViewItem(parent,text) {
columnColor=QColor(color);
}
KMIColorListViewItem::KMIColorListViewItem(QListViewItem *item,const QString &text,const QString &color):QListViewItem(item,text){
columnColor=QColor(color);
}
KMIColorListViewItem::KMIColorListViewItem(QListView *parent,const QString &text,const QColor &color):QListViewItem(parent,text) {
columnColor=color;
}
KMIColorListViewItem::KMIColorListViewItem(QListViewItem *item,const QString &text,const QColor &color):QListViewItem(item,text) {
columnColor=color;
}
KMIColorListViewItem::~KMIColorListViewItem(){
}
/** No descriptions */
void KMIColorListViewItem::paintCell ( QPainter * p, const QColorGroup & cg, int column, int width, int align ){
if (column==0) {
QListViewItem::paintCell(p,cg,column,width,align);
} else if (column==1) {
if (!isSelected()) {
// Draw background to be white if it's not highlighted
p->fillRect(0,0,width,height(),QBrush(cg.base(),Qt::SolidPattern));
p->setPen(QPen(QColor("#000000"),0));
p->drawRect(3,3,width-6,height()-6);
p->fillRect ( 4, 4, width-8, height()-8, QBrush(columnColor,Qt::SolidPattern));
} else {
// Draw highlighted background
p->fillRect(0,0,width,height(),QBrush(cg.highlight(),Qt::SolidPattern));
p->setPen(QPen(QColor("#000000"),0));
p->drawRect(3,3,width-6,height()-6);
p->fillRect ( 4, 4, width-8, height()-8, QBrush(columnColor,Qt::SolidPattern));
}
} else {
QListViewItem::paintCell(p,cg,column,width,align);
}
}
/** No descriptions */
void KMIColorListViewItem::setText(int column,const QString &text){
if (column!=1) {
QListViewItem::setText(column,text);
}
}
/** No descriptions */
void KMIColorListViewItem::setColor(const QString &color){
columnColor=QColor(color);
repaint();
}
/** No descriptions */
void KMIColorListViewItem::setColor(const QColor &color){
columnColor=color;
repaint();
}
/** No descriptions */
const QString & KMIColorListViewItem::getColorName(){
return columnColor.name();
}
/** No descriptions */
const QColor & KMIColorListViewItem::getColor(){
return columnColor;
}
-
- Beiträge: 70
- Registriert: 11. August 2004 07:44
- Wohnort: Bergen auf Rügen
- Kontaktdaten:
Danke für dein Beispiel @shermann
Ich hab mir eine ComboBox Klasse abgeleitet. Aber wenn ich diese Klasse verwende erscheint keine ComboBox.
Ich weiß nicht so genau was ich in den Konstruktor schreiben soll, vieleicht ist da der Fehler.
Der Konstruktor
Mfg jaegermeister
Ich hab mir eine ComboBox Klasse abgeleitet. Aber wenn ich diese Klasse verwende erscheint keine ComboBox.
Ich weiß nicht so genau was ich in den Konstruktor schreiben soll, vieleicht ist da der Fehler.
Der Konstruktor
Code: Alles auswählen
IComboBox::IComboBox(QWidget *parent, const char * name, const QColor &color )
{
setColor(color);
}
Wie könnten ja wenn wir wollten, aber wie wollen ja nicht.
Du gehst den falschen Weg.jaegermeister hat geschrieben:Danke für dein Beispiel @shermann
Ich hab mir eine ComboBox Klasse abgeleitet. Aber wenn ich diese Klasse verwende erscheint keine ComboBox.
Ich weiß nicht so genau was ich in den Konstruktor schreiben soll, vieleicht ist da der Fehler.
Der KonstruktorMfg jaegermeisterCode: Alles auswählen
IComboBox::IComboBox(QWidget *parent, const char * name, const QColor &color ) { setColor(color); }
Du leitest nicht von QComboBox ab, sondern von QListboxItem.
Unter http://doc.trolltech.com/3.3/listboxcom ... html#x2035 findest Du ein Beispiel.
Also, nehmen wir an, Du hast ein QListboxItem abgeleitet, mit deiner eigenen paint methode, dann kannst du mit
Code: Alles auswählen
comboBoxVariable->listBox()->insertItem(deinListBoxItem);
schau dir das o.g. beispiel an, die machen das naemlich genau so.
wichtig ist dieser auszug:
Code: Alles auswählen
//...and insert 50 items into the Combobox
for ( i = 0; i < 50; i++ ) {
str = QString( "Combobox Item %1" ).arg( i );
if ( i % 9 )
cb1->insertItem( str );
else
cb1->listBox()->insertItem( new MyListBoxItem );
}