Seite 1 von 1

Problem mit QToolBar

Verfasst: 19. September 2007 13:48
von C_R
Hi!

Beim Testen meiner Oberfläche viel auf, dass ich eine QToolBar (benutze allerdings nur eine ;) ) per Rechtsklick über ein Kontextmenü deaktiviert werden kann - unsinnigerweise. D.h. ich rechtsklicke auf die ToolBar, ein Kontextmenu mit nur einem Häkchen/Kreuzchen erscheint. De-select ich dieses Häkchen/Kreuzchen, verschwindet die ToolBar (unwiederrufbar). Das ist so nun gar nicht gewünscht.

Habe auch keine grossartigen Veränderungen an der ToolBar vorgenommen: die ToolBar geherbert eine QActionGroup mit 3 Actions.

Habe alle setter der Klasse durchgesehen und das einzige, was Sinn ergeben würde ist:

QToolBar::setContextMenuPolicy(Qt::NoContextMenu);

Aber leider ohne Effekt! Habt ihr da eine Idee, woran das liegt bzw. wie ich das abstellen kann? Wäre euch sehr verbunden :)

Grüße
Christian

Verfasst: 19. September 2007 14:30
von CaptnChaos
HM.
Also SOWAS habe ich noch nie bei einer QToolbar gesehen...
Ich bin ja immer ein Fan von Minimalbeispielen. Häng doch ma eins dran.
Einfach das ich ma gucken kann, was da los ist. Am liebsten wäre mir natürlich voll durchkommentierter Quellcode, der auch kompilirerbar ist...
Sonst tuts auch einfach nur ein bisschen relevanter Code.

Verfasst: 19. September 2007 14:48
von C_R
Version ist übrigens 4.1.1

Code: Alles auswählen

void MainWindow::createToolBar()
{
	QToolBar *toolBar = new ToolBar::ToolBar(this);
	addToolBar(toolBar);
}

Code: Alles auswählen

ToolBar::ToolBar(QWidget *parent) : QToolBar(parent), parentObj(parent)
{
	setMovable(true);
	createActions();
	createTools();
	QToolBar::setContextMenuPolicy(Qt::NoContextMenu);
	
}

void ToolBar::createActions()
{
	toolGroup = new QActionGroup(this);

	toolSettingsAction = new QAction(QIcon(":/res/icons/settingsPanel.png"), tr("&Einstellungen"), this);
	toolCalculateAction = new QAction(QIcon(":/res/icons/calculatePanel.png"),tr("&Berechnung"), this);
	toolDisplayAction = new QAction(QIcon(":/res/icons/displayPanel.png"), tr("&Darstellung"), this);
	
	connect(toolSettingsAction, SIGNAL(triggered(bool)), parentObj, SLOT(settingsPanel()));
	connect(toolCalculateAction, SIGNAL(triggered(bool)), parentObj, SLOT(wizardPanel()));
	connect(toolDisplayAction, SIGNAL(triggered(bool)), parentObj, SLOT(displayPanel()));
	
	connect(parentObj, SIGNAL(settingsPanelButton(bool)), toolSettingsAction, SLOT(setChecked(bool)));
	connect(parentObj, SIGNAL(wizardPanelButton(bool)), toolCalculateAction, SLOT(setChecked(bool)));
	connect(parentObj, SIGNAL(displayPanelButton(bool)), toolDisplayAction, SLOT(setChecked(bool)));
	
	toolSettingsAction->setCheckable(true);
	toolCalculateAction->setCheckable(true);
	toolDisplayAction->setCheckable(true);
	
	toolGroup->addAction(toolSettingsAction);
	toolGroup->addAction(toolCalculateAction);
	toolGroup->addAction(toolDisplayAction);
// 	toolSettingsAction->setCheckable(true);
	toolSettingsAction->setChecked(true);

	addAction(toolSettingsAction);
	addAction(toolCalculateAction);
	addAction(toolDisplayAction);
}

das ist alles, von daher ~

Verfasst: 19. September 2007 15:11
von CaptnChaos
hm, dann überschreib doch ganz schnell und klammheimlich den MousPressEvent.
ARGH! Nein, das gehört irgendwie zu dem QMenu oder zum QMainWindow. Mit QToolBar hat das nix zu tun. Wenn ich auf ein zu einem QMainWindow gehöriges QMenu rechtsklicke, dann bekomme ich dasselbe Menü wieder und kann die QToolBar wieder anzeigen lassen.

Verfasst: 19. September 2007 17:04
von C_R
Habe auch eine QMenuBar im selben MainWindow und dieses bietet mir nicht diese "lass es verschwinden"-Option..

Das Ganze ärgert mich schon ein Stück weit :oops: