Image außerhalb eines Widgets erzeugen

Alles rund um die Programmierung mit Qt
Antworten
ituser
Beiträge: 11
Registriert: 8. November 2010 11:40

Image außerhalb eines Widgets erzeugen

Beitrag von ituser »

Hallo,

das ist mein erster Beitrag, also sorry wenn ich meine Frage im falschen Verzeichnis gestellt habe oder meine Frage schon irgendwo beantwortet wurde.
Ist es möglich außerhalb eines Qwidgets, ein oder mehrere Images zu erzeugen???
Wenn ja, wie funktioniert es?
Ich habe es mit einem Paint event versucht und damit funktionierts nicht.

mfg
Ituser

Ich verwende Qt 4.7.1 und Qtcreator 2.1 beta2
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ein QImage (oder auch QPixmap, QPicture, ...) kannst du überall erzeugen.
Ein paintEvent() gibts nur in QWidget (und Derivaten).
Du willst denke ich ein Image auf ein Widget zeichnen - das geht händisch auf nem QWidget nur in paintEvent.
Du kannst aber ein QLabel nehmen, und das Pixmap einfach dort setzen (setPixmap). Es gibt auch noch andere Wege, z.B. mit Qt Graphics View. Aber du solltest eh erstmal die Tutorials durchgehen, schaut so aus als ob du einfach ohne ausreichend Grundverständnis herumexperimentierst.
ituser
Beiträge: 11
Registriert: 8. November 2010 11:40

Beitrag von ituser »

Danke für die Antwort.
Das Problem ist ich will nicht nur innerhalb des widgets ein Image haben sondern es soll auch außerhalb existieren.
Es soll überall auf dem Bildschirm setzbar sein unabhängig vom Widget.
Kann ich einem Image nicht irgendwie Globale Variablen geben, wie z.B bei einem QCursor mit setPos???
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Nein, ein Bild kannst du nicht beliebig am Bildschirm rumschieben. Ein Bild ist nur ein wirrer Array-Haufen. Dieser muss interpretiert und gezeichnet werden. Zeichnen kann in Qt nur ein QWidget. Ein Cursor ist eine globale System-Resource, ein Cursor gehört deiner Applikation nicht, du kannst sie nur steuern. Siehst du den Unterschied?

Was kannst du machen?
Setze ein Pixmap auf ein Label, das label zeigst du außerhalb deines MainWindows an, achte darauf, dass das Label keinen parent hast. Dann ist die pos() des Labels auf den gesamten Screen bezogen.

Was bezweckst du eigentlich mit diesem "überall-Bild"? Den User verwirren?
ituser
Beiträge: 11
Registriert: 8. November 2010 11:40

Beitrag von ituser »

Den User unnötig verwirren will ich eigentlich nicht.
Ich bekomme von einer externen Hardware Koordinaten die ich auf dem Desktop ausgegebe, ähnlich wie ein mouszeiger.
Da ich aber nur ein Mousezeiger habe und nicht mehrere erstellen kann (wie du schon sagtest "nur steuern") baue ich mir somit ne alternative.
Vielen Dank für deine Hilfe, ich war auf dem falschen Weg.
Da du mir schon geraten hast mehr tutorials zu lesen, weißt du noch nützliche Quellen?
Ich habe bereits die nokia.doc und das Buch Qt 4.6 von Jürgen Wolf durchgearbeitet.
Wünschenswert wäre etwas zum neuen Qt 4.7 und Qml
(ich weiß dass gehört nicht mehr zum thema aber extra ein neues Thema aufmachen wegen einer frage ist denke ich nicht sinnvoll)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

ituser hat geschrieben:Ich bekomme von einer externen Hardware Koordinaten die ich auf dem Desktop ausgegebe, ähnlich wie ein mouszeiger.
Ich würde diese Ausgabe nicht auf dem Desktop machen. Dafür hat man doch Fenster! Leite von QWidget ab. Das Widget ist dann deine Anzeigefläche, auf der du die Positionen markieren kannst. Will der Nutzer von deinen Events mal nix mitkriegen, braucht er nur deine Applikation minimieren. Wenn sie wirklich den ganzen Desktp einnehmen soll, gib dem User die Option das Fenster Fullscreen zu setzen.
Da du mir schon geraten hast mehr tutorials zu lesen, weißt du noch nützliche Quellen?
Ich habe bereits die nokia.doc und das Buch Qt 4.6 von Jürgen Wolf durchgearbeitet.
<qt-src>/examples und <qt-src>/demos. Das kommt alles mit Qt auf deine Platte. Dort findest du natürlich auch was zu QML.
ituser
Beiträge: 11
Registriert: 8. November 2010 11:40

Beitrag von ituser »

Danke schön
Antworten