Drucken mit Qt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
egge
User
Beiträge: 5
Registriert: Mittwoch 23. Juli 2003, 15:02

Freitag 16. April 2004, 16:24

Hallo erst einmal!

Ich hab da folgendes Problem und würde micht sehr freuen, wenn mir jemand weiter helfen könnte! Bin schon am verzweifeln! :cry:

Problem:
Ich hab eine Oberfläche geschaffen, wo man soviele Vierecke erstellen kann, wie man möchte. Diese Vierecke kann man auf dieser Oberfläche hin und her bewegen. Später werden diese Vierecke, je nachdem wie der Benutzer es will, mit Linien verbunden (geht hier noch nicht). Diese Linien werden QCanvasLine-Objekte sein (deshalb der QCanvasView).
Ich möchte jetzt eine Funktion einbauen, wo ich diese Vierecke bzw. später auch die Verbindungen dazu, ausdrucken kann. Leider hab ich es bis jetzt nur für die Linien bzw QCanvas-Objekte geschafft, die Vierecke werden überhaupt nicht gedruckt.
Wer kann mir da weiter helfen??? Aus der Dokumentation werde ich nicht schlau :(

Code:

Code: Alles auswählen

import sys
from qt import *
from qtcanvas import *

class MainWindow (QMainWindow):
	def __init__ (self):
		QMainWindow.__init__ (self)
		self.resize (1024, 768)
		self.canvas = QCanvas (4000, 4000)
		self.canvas.setBackgroundColor (QColor (Qt.blue))
		self.canvas.setAdvancePeriod (30)

		self.editor = Editor (self.canvas, self)
		self.editor.resizeContents (4000, 4000)
		self.workspace = self.editor.viewport ()
		self.setCentralWidget (self.editor)

		self.file = QPopupMenu (self)
		self.menuBar().insertItem ('Datei', self.file)
		self.file.insertItem (	'Drucken', self.printing)
	self.file.insertItem('Beenden',qApp,SLOT('closeAllWindows ()'))

		self.widget = QPopupMenu (self)
		self.menuBar().insertItem ('Glyphen', self.widget)
		self.widget.insertItem ('Glyph erstellen', self.makeWidget)

	def printing (self):
		pass

	def makeWidget (self):
		self.glyph = Glyph (self.workspace, self)
		self.glyph.setGeometry (QRect (0, 0, 100, 100)
		self.editor.addChild (self.glyph)
		self.glyph.show ()

class Glyph (QFrame):
	def __init__ (self, workspace, mainWindow):
		QFrame.__init__ (self, workspace)
		self.setFrameShape (QFrame.StyledPanel)
		self.setFrameShadow (QFrame.Raised)

	def mousePressEvent (self, ev):
		if ev.button () == Qt.RightButton:
			return
		self.xold = ev.globalX (9
		self.yold = ev.globalY ()

	def mouseMoveEvent (self, ev):
		if ev.state () == Qt.RightButton:
			retrurn
		dx = ev.globalX () - self.xold
		dy = ev.globalY () - self.yold
		x = y = mainWindow.editor.setCoordinates (self.x (), self.y ())
		if x < 0:
			self.move (0, self.y () + dy)
		elif y < 0:
			self.move (self.x () + dx, 0)
		else:
			self.move (self.x () + dx, self.y () + dy)
		self.xold = ev.globalX ()
		self.yold = ev.globalY ()

class Editor (QCanvasView):
	def __init__ (self, canvas, mainWindow):
		QCanvasView.__init__ (self, canvas, mainWindow)

	def setCoordinates (self, x, y):
		newX, newY = self.viewportToContents (int (x), int (y))
		return newX, newY

if __name__ == '__main__':
	app = QApplication (sys.argv)
	mw = MainWindow ()
	app.connect (app, SIGNAL ('lastWindowClosed ()'), app, SLOT ('quit ()'))
	app.exec_loop ()
Schonmal vielen Dank im Voraus für eure Bemühung!

egge
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Freitag 16. April 2004, 21:05

Hmm, habe noch nie was mit QT gedruckt. Hilft dir QPrinter vielleicht weiter?

Hans
Antworten