PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt: QPixmap und QPopupMenu



jwebworks
22-04-2003, 09:26
Ich Grüße euch,

nachdem ich mit meinen ersten Qt-Schritten jetzt weitergekommen bin,
stoße ich in einem weiteren Beispiel auf seltsame Effekte.

Mein Klassenkonstruktor:


ScribbleWindow::ScribbleWindow()
{
_color = black;

// dont' blank window before repainting
setBackgroundMode ( NoBackground );

// the menu
_filemenu = new QPopupMenu;
_filemenu->insertItem ( "&Quit", qApp, SLOT ( quit() ) );

_colormenu = new QPopupMenu;

QPixmap blackpixmap ( 20, 20 );
blackpixmap.fill ( black );
_colormenu->insertItem ( blackpixmap, COLOR_MENU_ID_BLACK );

QPixmap redpixmap ( 20, 20 );
redpixmap.fill ( red );
_colormenu->insertItem ( redpixmap, COLOR_MENU_ID_RED );

QPixmap bluepixmap ( 20, 20 );
bluepixmap.fill ( blue );
_colormenu->insertItem ( bluepixmap, COLOR_MENU_ID_BLUE );

QPixmap greenpixmap ( 20, 20 );
greenpixmap.fill ( green );
_colormenu->insertItem ( greenpixmap, COLOR_MENU_ID_GREEN );

QPixmap yellowpixmap ( 20, 20 );
yellowpixmap.fill ( yellow );
_colormenu->insertItem ( yellowpixmap, COLOR_MENU_ID_YELLOW );

QObject::connect ( _colormenu, SIGNAL (activated ( int ) ),
this, SLOT ( slotColorMenu ( int ) ) );

_helpmenu = new QPopupMenu;
_helpmenu->insertItem ( "&About QtScribble", this, SLOT ( slotAbout () ) );
_helpmenu->insertItem ( "About &Qt", this, SLOT ( slotAboutQt () ) );

_menubar = new QMenuBar ( this );
_menubar->insertItem ( "&File", _filemenu );
_menubar->insertItem ( "&Color", _colormenu );
_menubar->insertSeparator();
_menubar->insertItem ( "&Help", _helpmenu );
}


Dieser Code müsste eigentlich ein Color-Menu erzeugen, dass
5 verschiedene Pixmaps enthält. Leider erscheinen mit diesem Code
im Menü später zwar 5 verschiedene Menüeinträge, die aber leer sind.
nur der oberste Eintrag enthält die zuletzt erzeugte QPixmap.

Einen Screenshot habe ich in den Anhang.
Ich benutze Qt 3.1.1, dass bei SuSE 8.2 mitgeliefert wurde. Sind da
evtl. irgendwelche Inkompatibilitäten bekannt?
Oder habe ich einen Fehler eingebaut, den ich nicht sehe?

cu, stop.h

anda_skoa
22-04-2003, 09:51
Hmm, sieht korrekt aus.

Ich bin leider im Moment nicht an meinem Rechner und hab hier kein Qt.
Ich kanns eventuell mit Laufe des Nachmittags ausprobieren, falls bis dahin niemand eine Lösung gefunden hat.

Ciao,
_

jwebworks
22-04-2003, 10:21
Ich habe eine Art Workaround gefunden.

Wenn ich zu dem Pixmap jeweils noch einen Text angebe, also:



_colormenu->insertItem ( blackpixmap, "B&lack", COLOR_MENU_ID_BLACK );


dann gibt er das Menü richtig aus. Ist aber nicht im Sinne des Erfinders :)