ToolBar mit mind. 2 Spalten

Alles rund um die Programmierung mit Qt
Antworten
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

ToolBar mit mind. 2 Spalten

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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!
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

Beitrag von JoseMan »

Okay, danke für den Tipp...
Werde ich machen, und evtl. nachmal hier posten!!
....
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

Beitrag 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!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 :D (sry)
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

Beitrag von JoseMan »

Mhh, okay!
Ich werde mal darüber nachdenken!
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ....
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

Beitrag 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ß ...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 :)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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);
}
Dateianhänge
toolbar.png
toolbar.png (19.69 KiB) 4918 mal betrachtet
Antworten