Seite 1 von 1
(gelöst) QMDISubWindow: Bewegen mit Mouse unterdrücken ...
Verfasst: 25. Dezember 2010 18:48
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.
Verfasst: 25. Dezember 2010 19:03
von upsala
Warum verwendest du dann ein QMdiArea wenn du dessen Funktionalität nicht benötigst?
Verfasst: 26. Dezember 2010 13:09
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.
Verfasst: 26. Dezember 2010 13:37
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?
Verfasst: 26. Dezember 2010 14:53
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.
Verfasst: 26. Dezember 2010 15:03
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.
Verfasst: 26. Dezember 2010 15:38
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.
Verfasst: 29. Dezember 2010 18:53
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.