[gelöst] Banner in Toolbar
[gelöst] Banner in Toolbar
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
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
Zuletzt geändert von Treehouse am 8. September 2009 14:02, insgesamt 1-mal geändert.
Re: Banner in Toolbar
http://qt.nokia.com/doc/4.5/qtoolbar.html#addWidgetTreehouse 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/qlabel.html ... Links-prop
-
Exasperation
- Beiträge: 186
- Registriert: 11. März 2009 18:00
- Wohnort: VS
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...
Ne Expertenmeinung dazu?
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 );
http://qt.nokia.com/doc/4.5/qspaceritem.htmlTreehouse 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
-
Exasperation
- Beiträge: 186
- Registriert: 11. März 2009 18:00
- Wohnort: VS
/edit: Okay das Spaceritem (siehe unten) macht das was ich versuche reinzugrätschen viel leichterExasperation 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...
Ne Expertenmeinung dazu?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 );
Vielen dank für eure tollen Antworten.
Ich habe das jetzt mal so versucht:
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
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);Gruß
Treehouse
Spiel doch mal hiermit rum:Treehouse hat geschrieben:Vielen dank für eure tollen Antworten.
Ich habe das jetzt mal so versucht:
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?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);
Gruß
Treehouse
Code: Alles auswählen
QSizePolicy::Policy hPolicy = QSizePolicy::Minimumich 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.
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;
}
}