Hi!
Ich bin gerade dabei eine GUI mit Python und Qt zu programmieren.
Ich möchte ein Objekt (z.B. ein QFrame) mit Hilfe der Maus verschieben. Ich weiss das es mit QMouseEvent gehen soll, allerdings hab ich es bis jetzt nicht geschafft.
Kann mir jemand weiter helfen oder einen Tip geben???
QMouseEvent
-
- User
- Beiträge: 22
- Registriert: Donnerstag 29. August 2002, 00:34
- Wohnort: Frankfurt am Main
- Kontaktdaten:
So funktioniert das nicht - Fenster verschieben ist die Aufgabe des Fenstermanagers.
Bei Qt kommen solche Events nicht an, da eine Titelleiste nicht direkt zum Fenster gehört.
Ich weiss nicht genau, was Du machen willst, aber schau doch mal lieber bei QCanvas rein.
Bei Qt kommen solche Events nicht an, da eine Titelleiste nicht direkt zum Fenster gehört.
Ich weiss nicht genau, was Du machen willst, aber schau doch mal lieber bei QCanvas rein.
Gruß,
:M:
:M:
Mickey hat geschrieben:So funktioniert das nicht - Fenster verschieben ist die Aufgabe des Fenstermanagers.
Bei Qt kommen solche Events nicht an, da eine Titelleiste nicht direkt zum Fenster gehört.
Ich weiss nicht genau, was Du machen willst, aber schau doch mal lieber bei QCanvas rein.
Hi Mickey!!
Erste einmal vielen dank, dass Du mir weiter helfen wolltest. Ich hab zwar deinen Rat verfolgt und mir QCanvas angeschaut, allerdings hat es mir nicht viel geholfen.
Naja, ich hab mein Problem auch so gelöst. Falls du interesse hast:
Code: Alles auswählen
import sys, string
from qt import *
class Glyph(QFrame):
def __init__ (self, *args):
apply (QFrame.__init__, (self, ) + args)
self.setFrameShape(QFrame.StyledPanel)
self.setFrameShadow(QFrame.Raised)
self.PushButton2 = QPushButton(self,"OK 1")
self.PushButton2.setGeometry(QRect(10,10,40,30))
self.PushButton2.setText("OK 1")
self.PushButton2_3 = QPushButton(self,"OK 2")
self.PushButton2_3.setGeometry(QRect(150,120,40,30))
self.PushButton2_3.setText("OK 2")
self.setMouseTracking(0)
def mousePressEvent (self, ev):
if ev.button () != Qt.LeftButton:
return
self.xold = ev.globalX()
self.yold = ev.globalY()
def mouseMoveEvent (self, ev):
if ev.state () != Qt.LeftButton:
return
dx = ev.globalX() - self.xold
dy = ev.globalY() - self.yold
self.move(self.x() + dx, self.y() + dy)
self.xold = ev.globalX()
self.yold = ev.globalY()
class MainWindow (QMainWindow):
def __init__ (self, *args):
apply (QMainWindow.__init__, (self, ) + args)
self.workspace = QWorkspace (self)
self.resize (800, 600)
self.setCentralWidget(self.workspace)
glyph = Glyph(self)
glyph.setGeometry(QRect(90,110,200,160))
glyph.show()
a = QApplication (sys.argv)
mw = MainWindow ()
mw.show ()
a.connect (a, SIGNAL ('lastWindowClosed ()'), a, SLOT ('quit ()'))
a.exec_loop ()
Ích hab schon einiges Versuch, bin aber kein Schritt vorangekommen. Hast du vielleicht eine Idee?
Gruß egge
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Mal eine Zwischenfrage an Egge: Warum erzeugst du den Code manuell und nicht mit dem QT Designer?
Ich muß allerdings gleich gestehen, dass dein manuell erzeugter Code unschlagbar kmpakt ist. Ein mittels IDE erzeugter Code kann da nicht mithalten. Trotzdem finde ich den QT designer durchaus brauchbar.
Hans
Ich muß allerdings gleich gestehen, dass dein manuell erzeugter Code unschlagbar kmpakt ist. Ein mittels IDE erzeugter Code kann da nicht mithalten. Trotzdem finde ich den QT designer durchaus brauchbar.
Hans