Seite 1 von 1
[gelöst] Banner in Toolbar
Verfasst: 8. September 2009 08:51
von Treehouse
Hallo,
mich würde intressieren ob es möglich ist ein Banner in der Toolbar anzuzeigen, neben den normalen Buttons ? Vielleicht mit QLabel ? Wenn der User auf dieses Banner klickt sollte er zu einer Homepage geleitet werden.
Wenn es möglich ist gibt es irgendwo ein Beispiel?
Gruß
Treehouse
Re: Banner in Toolbar
Verfasst: 8. September 2009 09:37
von pfid
Treehouse hat geschrieben:Hallo,
mich würde intressieren ob es möglich ist ein Banner in der Toolbar anzuzeigen, neben den normalen Buttons ? Vielleicht mit QLabel ? Wenn der User auf dieses Banner klickt sollte er zu einer Homepage geleitet werden.
Wenn es möglich ist gibt es irgendwo ein Beispiel?
Gruß
Treehouse
http://qt.nokia.com/doc/4.5/qtoolbar.html#addWidget
http://qt.nokia.com/doc/4.5/qlabel.html ... Links-prop
Verfasst: 8. September 2009 10:08
von Treehouse
Hey super, vielen dank für die Antwort.
Werde mir die Sachen mal ansehen.
Gruß
Treehouse
Verfasst: 8. September 2009 10:55
von Treehouse
Hat super geklappt. Nur habe ich noch das Problem das ich das Widget gerne immer rechts am Rand der Toolbar darstellen würde. Ich habs mal mit Qt::AlignRight probiert aber leider hat das nicht den gewünschten Erfolg gebracht.
Gruß
Treehouse
Verfasst: 8. September 2009 11:03
von archer
Vielleicht ein Spacer der die Lücke ausfüllt?
Verfasst: 8. September 2009 11:31
von Exasperation
Keine Ahnung ob das funktioniert, da nicht getestet, ist mir nur als erstes eingefallen, außerdem nicht elegant und es gibt bestimmt leichtere Wege. ^^ Aaaalso versuch folgendes:
In die Toolbar addest du nur EIN Widget... ein ganz normales QWidget, dieses enthält ein QHBoxLayout. In dieses Layout legst du nacheinander die Widgets die Links stehen (Buttons oder was auch immer du da hast, Actions funktionieren nicht, da ein Layout Widgets aufnimmt), dann addest du in das Layout einen freien Raum, der sich immer den maximalen Platz nimmt und zwar mit my_layout.addStretch(1) und als letztes fügst du dem Layout dein Banner hinzu... Weiß wirklich nicht ob das so funktioniert...
Code: Alles auswählen
QHBoxLayout my_layout;
my_layout.addWidget( links_stehendes_widget_1 );
my_layout.addWidget( links_stehendes_widget_2 );
my_layout.addWidget( links_stehendes_widget_3 );
my_layout.addStretch(1);
my_layout.addWidget( my_banner );
QWidget toolbar_widget;
toolbar_widget.setLayout( my_layout );
my_toolbar.addWidget( toolbar_widget );
Ne Expertenmeinung dazu?
Verfasst: 8. September 2009 12:19
von pfid
Treehouse hat geschrieben:Hat super geklappt. Nur habe ich noch das Problem das ich das Widget gerne immer rechts am Rand der Toolbar darstellen würde. Ich habs mal mit Qt::AlignRight probiert aber leider hat das nicht den gewünschten Erfolg gebracht.
Gruß
Treehouse
http://qt.nokia.com/doc/4.5/qspaceritem.html
Verfasst: 8. September 2009 12:38
von Exasperation
Exasperation hat geschrieben:Keine Ahnung ob das funktioniert, da nicht getestet, ist mir nur als erstes eingefallen, außerdem nicht elegant und es gibt bestimmt leichtere Wege. ^^ Aaaalso versuch folgendes:
In die Toolbar addest du nur EIN Widget... ein ganz normales QWidget, dieses enthält ein QHBoxLayout. In dieses Layout legst du nacheinander die Widgets die Links stehen (Buttons oder was auch immer du da hast, Actions funktionieren nicht, da ein Layout Widgets aufnimmt), dann addest du in das Layout einen freien Raum, der sich immer den maximalen Platz nimmt und zwar mit my_layout.addStretch(1) und als letztes fügst du dem Layout dein Banner hinzu... Weiß wirklich nicht ob das so funktioniert...
Code: Alles auswählen
QHBoxLayout my_layout;
my_layout.addWidget( links_stehendes_widget_1 );
my_layout.addWidget( links_stehendes_widget_2 );
my_layout.addWidget( links_stehendes_widget_3 );
my_layout.addStretch(1);
my_layout.addWidget( my_banner );
QWidget toolbar_widget;
toolbar_widget.setLayout( my_layout );
my_toolbar.addWidget( toolbar_widget );
Ne Expertenmeinung dazu?
/edit: Okay das Spaceritem (siehe unten) macht das was ich versuche reinzugrätschen viel leichter

sry für den quark

Verfasst: 8. September 2009 13:25
von Treehouse
Vielen dank für eure tollen Antworten.
Ich habe das jetzt mal so versucht:
Code: Alles auswählen
// toolbar logo
m_spacer = new QSpacerItem (100,48);
m_logo = new QLabel(ui.mainToolBar);
QPixmap logo;
logo.load("C:\\Logo.bmp");
m_logo->setPixmap(logo);
ui.mainToolBar->layout()->addItem(m_spacer);
ui.mainToolBar->addWidget(m_logo);
Leider hat es nicht den gewünschten Effekt. Ich scheine was falsch zu machen, wäre nett wenn mir jemand sagen könnte wo der Haken ist. Und ist es vielleicht möglich das Spacer Item immer so auszurichten das es immer zur Toolbar größe das Logo nach rechts schiebt oder muss man das immer per Hand anpassen?
Gruß
Treehouse
Verfasst: 8. September 2009 13:38
von pfid
Treehouse hat geschrieben:Vielen dank für eure tollen Antworten.
Ich habe das jetzt mal so versucht:
Code: Alles auswählen
// toolbar logo
m_spacer = new QSpacerItem (100,48);
m_logo = new QLabel(ui.mainToolBar);
QPixmap logo;
logo.load("C:\\Logo.bmp");
m_logo->setPixmap(logo);
ui.mainToolBar->layout()->addItem(m_spacer);
ui.mainToolBar->addWidget(m_logo);
Leider hat es nicht den gewünschten Effekt. Ich scheine was falsch zu machen, wäre nett wenn mir jemand sagen könnte wo der Haken ist. Und ist es vielleicht möglich das Spacer Item immer so auszurichten das es immer zur Toolbar größe das Logo nach rechts schiebt oder muss man das immer per Hand anpassen?
Gruß
Treehouse
Spiel doch mal hiermit rum:
Desweiteren ist "hat es nicht den gewünschten Effekt" keine sehr genaue Fehlerbeschreibung

Verfasst: 8. September 2009 13:43
von archer
ich hatte das mal so gemacht. Der Code müsste dann entsprechend angepasst werden.
Statt eines Spacers habe ich ein Label genommen. Funktionierte, daher ist es nicht mehr abgeändert worden.
Code: Alles auswählen
void CMainWindowBase::initLogo(QToolBar* const apToolBar)
{
QPixmap Logo(QPixmap(CCompanyStrings::getLogoAndNameBitmapFile_105x30()));
Logo.setMask(Logo.createHeuristicMask());
QLabel* pLabel(new QLabel(this));
pLabel->setContentsMargins(0, 0, 6, 0);
pLabel->setPixmap(Logo);
pLabel->setToolTip(CCompanyStrings::getAddressHtml());
QLabel* pLabelSpacer(new QLabel(this));
pLabelSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QToolBar* pBar(apToolBar);
if (pBar == NULL)
{
pBar = addToolBar(qApp->applicationName());
}
if (pBar != NULL)
{
pBar->setObjectName("logoBar_" + qApp->applicationName());
pBar->setFloatable(false);
pBar->setMovable(false);
pBar->addWidget(pLabelSpacer);
pBar->addWidget(pLabel);
}
else
{
delete pLabel;
delete pLabelSpacer;
}
}
Verfasst: 8. September 2009 14:01
von Treehouse
Hallo archer,
sehr sehr cool funktioniert mehr als perfekt. VIELEN VIELEN DANK!!!!
Thema ist gelöst.
Gruß
Treehouse