Seite 1 von 1
ToolBar mit mind. 2 Spalten
Verfasst: 26. Januar 2010 11:47
von JoseMan
Hallo,
gibt es eine Möglichkeit eine QToolBar mit 2, oder mehr, Spalten zu definieren?
Ich möchte gerne soetwas haben wie bei Paint die Werkzeugleiste.
Dankbar für Hilfe.
MfG
Verfasst: 26. Januar 2010 11:55
von franzf
Hab jetzt mal extra nach Screenshots von paint gesucht...
Das ist denke ich keine einfache Toolbar, das ist ein eigenes Widget (wenn das bei MS auch so heißt...)
Schau dir mal in den Examples das "Flow Layout Example" an, ich denke sowas ist für dein Vorhaben perfekt geeignet!
Verfasst: 26. Januar 2010 11:58
von JoseMan
Okay, danke für den Tipp...
Werde ich machen, und evtl. nachmal hier posten!!
....
Verfasst: 26. Januar 2010 12:06
von JoseMan
Okay, habe mir das mal angeschaut.
Es sieht nicht danach aus was ich brauche.
In meinem Fall habe ich ein MDI-Area, und an der Seite soll eben so eine Werkzeugleiste wie in MS Paint sein. Ach ja, ich möchte diese Werkzeugleiste zur Laufzeit ggf. noch erweitern.
Habe mal die QToolBox mir angeschaut, das ist vlt. noch am ehesten was.
Ist aber blöd das ich dort über QWidgets gehen muss, ich hätte es halt gerne mit QAction gehabt, wäre ja einfacher...
Naja, bin trotzdem offen für weiter Vorschläge!
Verfasst: 26. Januar 2010 12:27
von franzf
Ich denke schon dass das FLowLayout das ist was du haben willst!
Es reagiert dynamisch auf Größenänderung. Wir es breiter schaut es ob es die Zeilen neu anordnen kann, wird es in einer Zeile zu eng wird auch neu angeordnet. Wenn nur ToolButtons drin liegen (die ja eine fixe Breite haben) heist das für dich dass du deine "ToolBar" vergrößern kannst und je nach Breite mehr oder weniger Spalten hast. Du kannst es auch ohne weiteres nach oben legen (wenn es ein DockWidget ist), dann hast du halt nicht große Spalten sondern große Zeilen - erledigt das Layout selber!
Wenn du tatsächlich Unflexibilität schätzt und fix nur zwei Spalten haben willst, dann nimm ein QGridLayout, merk dir die Anzahl der Buttons die drin liegen - dann weißt du an welcher Position du dynamisch das nächste Item einsetzen kannst! Aber fixe Breite und nicht größenveränderlich ist so was von altertümlich

(sry)
Verfasst: 26. Januar 2010 12:33
von JoseMan
Mhh, okay!
Ich werde mal darüber nachdenken!
Verfasst: 26. Januar 2010 12:37
von RHBaum
Ist aber blöd das ich dort über QWidgets gehen muss, ich hätte es halt gerne mit QAction gehabt, wäre ja einfacher...
In applications many common commands can be invoked via menus, toolbar buttons, and keyboard shortcuts. Since the user expects each command to be performed in the same way, regardless of the user interface used, it is useful to represent each command as an action.
Klingt ned so als ob sich das beisst ?
Schau dir mal QDockWidget an, im Zusammenhang mit QMainwindow.
Um Actions wiederum auf nen widget darstellen zu koennen, ohne Menues oder fertige Toolbars zu verwenden, ist QToolBarButton ne mögliche bruecke. der Interagiert mit actions und laesst sich schoen aufm widget layouten.
Damit kann man so Werkzeugleisten / Fenster zusammenschrauben, wie man es von gimp und anderen kennt.
Ciao ....
Verfasst: 26. Januar 2010 13:10
von JoseMan
Also ich habe mich für QDockWidget jetzt entschieden.
Jetzt zu einer etwas "dummen" Frage: Wie bekomme ich das [X] aus der oberen Ecke raus? Also das von dem QDockwidget.
Habe schon viele mögliche Kombinationen der WindowsFlags benutzt.
Gruß ...
Verfasst: 26. Januar 2010 13:11
von franzf
RHBaum hat geschrieben:Um Actions wiederum auf nen widget darstellen zu koennen, ohne Menues oder fertige Toolbars zu verwenden, ist QToolBarButton ne mögliche bruecke. der Interagiert mit actions und laesst sich schoen aufm widget layouten.
QToolBarButon gibt es nur leider nicht

Am einfachsten:
QToolButton + QToolButton::setDefaultAction().
Da das Dingens in Paint ja ein Tool-Selector ist und man eigentlich nur mit einem einzigen Tool (also nicht mehrere gleichzeitig) arbeiten kann, wäre zusätzlich noch eine QButtonGroup angebracht.
Verfasst: 26. Januar 2010 13:14
von franzf
JoseMan hat geschrieben: Wie bekomme ich das [X] aus der oberen Ecke raus?
Unter der Annahme, das [X] ist der "close Dock" Button:
Dich interessieren nicht die WindowFlags sondern die QDockWidget::DockWidgetFeatures

Verfasst: 26. Januar 2010 17:32
von upsala
Hier mal ein Beispielcode:
Code: Alles auswählen
void addAction(QAction *action)
{
if (!action) return;
QWidget *wdg=...;
FlowLayout *layout=static_cast<FlowLayout*>(wdg->layout());
QToolButton *button=new QToolButton(wdg);
button->setMinimumSize(32, 32);
button->setMaximumSize(32, 32);
button->setAutoRaise(true);
button->setIconSize(QSize(32, 32));
button->setDefaultAction(action);
layout->addWidget(button);
}