(gelöst) QMDISubWindow: Bewegen mit Mouse unterdrücken ...

Alles rund um die Programmierung mit Qt
Antworten
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

(gelöst) QMDISubWindow: Bewegen mit Mouse unterdrücken ...

Beitrag von Ritchie »

Hallo Zusammen,

ich positioniere Fenster ohne Rahmen in meiner Anwendung. Jetzt konnte ich jedoch feststellen, das man mit der Maus das Fenster (inkl. Anwendung) an eine andere Position bewegen kann.

Kann man das Unterdrücken ? Wenn ja, wie.

Mouse Events belegen (überschreiben) scheint keinen Effekt zu haben.

Gruss R.
Zuletzt geändert von Ritchie am 29. Dezember 2010 18:54, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Warum verwendest du dann ein QMdiArea wenn du dessen Funktionalität nicht benötigst?
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Beitrag von Ritchie »

Weil es ein Teil der Anforderungen meiner Software ist, das Fenster nicht von Ihrem Platz verschoben werden können. Hierbei soll z.B. dem Bediener die Möglichkeit auf das OS zu kommen, genommen werden.

Auch die Gestaltung des Bildschirmaufbau soll im Bereich des Entwicklers bleiben.

Edit:
Ach ja, ich will diese Art der Funktion konfigurierbar machen

Gruss R.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Die Möglichkeit, Unterfenster anordnen zu können, ist mMn. DAS zentrale Feature von QMdiArea. Wenn du das unterbinden willst, ist QMdiArea die Falsche Wahl. Wie upsala denke ich auch, du willst einfach Widgets frei auf einem parent-Widget platzieren.
Falls du etwas mehr Funktionalität haben willst, nimm doch QGraphicsView mit QProxyWidgets. Schau dir auch mal die embeddeddialogs-Demo an.
Hierbei soll z.B. dem Bediener die Möglichkeit auf das OS zu kommen, genommen werden.
OS == Operating System == Betriebssystem.
Wie soll man durch Verschieben der QMdiSubWindows das Betriebssystem ermitteln können?
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Beitrag von Ritchie »

Wie soll man durch Verschieben der QMdiSubWindows das Betriebssystem ermitteln können?
In dem man den Desktop dahinter sieht und evtl. dann auf System Funktionen Zugriff bekommt, je nachdem wie dieser konfiguriert ist.

Ich verwende bereits 'QGraphicsView' innerhalb jedes SubMDI Fensters um die Objekte (Widgets) entsprechend zu positionieren. Und ja, ich möchte alles in verschiedenen Fenstern steuern. So kann der Anwender eine Statuszeile, einen Eingabebereich und Steuerleisten definieren.

Gruss R.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ritchie hat geschrieben:
Wie soll man durch Verschieben der QMdiSubWindows das Betriebssystem ermitteln können?
In dem man den Desktop dahinter sieht und evtl. dann auf System Funktionen Zugriff bekommt, je nachdem wie dieser konfiguriert ist.
Das hat aber gar nix mit MdiArea zu tun, sondern mit der Art wie du das MainWindow anzeigst. Mach es Fullscreen und verbiete dem User den Fullscreenmode zu verlassen.
Ich verwende bereits 'QGraphicsView' innerhalb jedes SubMDI Fensters um die Objekte (Widgets) entsprechend zu positionieren. Und ja, ich möchte alles in verschiedenen Fenstern steuern. So kann der Anwender eine Statuszeile, einen Eingabebereich und Steuerleisten definieren.
Mehrere Fenster verwealten mit einer Statuszeile ist einfach zu realisieren über die MdiArea als CentralWidget in einem MainWindow.

Kannst du bitte einmal GENAU deinen Aufbau beschreiben? Ich sehe nicht, wieso es notwendig sein sollte das Verschieben eines QMdiSubWindows in einer QMdiArea zu verbieten.

Und Programme, die sich auf meinem Rechner ohne Eingriffsmöglichkeit im Fullscreen starten, werden nach Beenden sofort wieder deinstalliert. Das ist mMn. das Grausamste, was man einem Privatanwender bieten kann...
Wenn die Applikation auf einzelnen Rechnern als einziges Bedieninterface laufen soll (z.B. Software an einem Geldautomaten) ist das natürlich wünschenswert.
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Beitrag von Ritchie »

Hi,

das ganze ist kein fertiges Programm, sondern eine Art Programmiersprache. Der Ersteller, kann Bilder erstellen, welche mit einer externen Steuerung (SPS von Siemens oder eigenen Microcontrollern für Steuerungsaufgaben).
Das ganze nennt sich SCADA für Industriesteuerungen
http://en.wikipedia.org/wiki/SCADA

Nun ja, wie der Ersteller seine Bilder erstellen will, ist seine Sache, ich stelle nur die technischen Möglichkeiten zur Verfügung. Unter welcher Lizenz das Programm später läuft, weiss ich noch nicht.

Jedenfalls ist die Funktion so üblich unter vergleichbaren Systemen unter Windows, wie Z.B. WinCC, Intouch, iFix, RS View

http://global.wonderware.com/DE/Pages/default.aspx
http://www.automation.siemens.com/mcms/ ... fault.aspx
http://de.wikipedia.org/wiki/Prozessvis ... #Beispiele


Gruss R.
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Beitrag von Ritchie »

Gelöst,

einfach ein Rect über die gesamte GraficScene verwenden, hierdurch bekommt das Fenster keinen direkten Mouse-Click mehr.

Code: Alles auswählen

	QGraphicsRectItem	*m_BackgroundPointer;
....
	m_BackgroundPointer=GraficScene->addRect ( 0, 0, 1, 1);


	m_BackgroundPointer->setRect (0, 0,WindowSize.width() ,WindowSize.height());
	m_BackgroundPointer->setBrush(BackGroundColor);
	m_BackgroundPointer->setPen( BackGroundColor );
Gruss R.
Antworten