Seite 1 von 1

Drucken mit Qt

Verfasst: Freitag 16. April 2004, 16:24
von egge
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

Verfasst: Freitag 16. April 2004, 21:05
von hans
Hmm, habe noch nie was mit QT gedruckt. Hilft dir QPrinter vielleicht weiter?

Hans