diff options
Diffstat (limited to 'doc/src/diagrams/programs')
-rw-r--r-- | doc/src/diagrams/programs/mdiarea.py | 71 | ||||
-rw-r--r-- | doc/src/diagrams/programs/qpen-dashpattern.py | 70 |
2 files changed, 141 insertions, 0 deletions
diff --git a/doc/src/diagrams/programs/mdiarea.py b/doc/src/diagrams/programs/mdiarea.py new file mode 100644 index 0000000..c78659f --- /dev/null +++ b/doc/src/diagrams/programs/mdiarea.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python + +import sys +from PyQt4.QtCore import SIGNAL +from PyQt4.QtGui import QApplication, QColor, QIcon, QLabel, QMdiArea, QPixmap, \ + QPushButton, QTableWidget, QTableWidgetItem, QTextEdit + + +class Changer: + + def __init__(self, mdiArea): + + self.mdiArea = mdiArea + self.state = 0 + + def change(self): + + if self.state == 0: + self.mdiArea.cascadeSubWindows() + self.mdiArea.setWindowTitle("Cascade") + elif self.state == 1: + self.mdiArea.tileSubWindows() + self.mdiArea.setWindowTitle("Tile") + self.state = (self.state + 1) % 2 + + +if __name__ == "__main__": + + app = QApplication(sys.argv) + pixmap = QPixmap(16, 16) + pixmap.fill(QColor(0, 0, 0, 0)) + icon = QIcon(pixmap) + app.setWindowIcon(icon) + + mdiArea = QMdiArea() + + textEdit = QTextEdit() + textEdit.setPlainText("Qt Quarterly is a paper-based newsletter " + "exclusively available to Qt customers. Every " + "quarter we mail out an issue that we hope will " + "bring added insight and pleasure to your Qt " + "programming, with high-quality technical articles " + "written by Qt experts.") + textWindow = mdiArea.addSubWindow(textEdit) + textWindow.setWindowTitle("A Text Editor") + + label = QLabel() + label.setPixmap(QPixmap("../../images/qt-logo.png")) + labelWindow = mdiArea.addSubWindow(label) + labelWindow.setWindowTitle("A Label") + + items = (("Henry", 23), ("Bill", 56), ("Susan", 19), ("Jane", 47)) + table = QTableWidget(len(items), 2) + + for i in range(len(items)): + name, age = items[i] + item = QTableWidgetItem(name) + table.setItem(i, 0, item) + item = QTableWidgetItem(str(age)) + table.setItem(i, 1, item) + + tableWindow = mdiArea.addSubWindow(table) + tableWindow.setWindowTitle("A Table Widget") + + mdiArea.show() + + changer = Changer(mdiArea) + button = QPushButton("Cascade") + button.connect(button, SIGNAL("clicked()"), changer.change) + button.show() + sys.exit(app.exec_()) diff --git a/doc/src/diagrams/programs/qpen-dashpattern.py b/doc/src/diagrams/programs/qpen-dashpattern.py new file mode 100644 index 0000000..095d51f --- /dev/null +++ b/doc/src/diagrams/programs/qpen-dashpattern.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +import sys +from PyQt4.QtCore import * +from PyQt4.QtGui import * +from PyQt4.QtSvg import QSvgGenerator + +if __name__ == "__main__": + + app = QApplication(sys.argv) + + #device = QSvgGenerator() + #device.setFileName("qpen-dashpattern.svg") + #device.setSize(QSize(216, 144)) + #device.setResolution(72) + + device = QImage(192, 144, QImage.Format_ARGB32) + device.fill(qRgba(0, 0, 0, 0)) + + #resolution = device.resolution() # dpi + #dpp = resolution / 72.0 + + p = QPainter() + p.begin(device) + + width = 8 + + pen = QPen() + pen.setWidth(width) + pen.setDashPattern([4, 2]) + pen.setCapStyle(Qt.FlatCap) + + faded_pen = QPen() + faded_pen.setWidth(width) + faded_pen.setDashPattern([4, 2]) + faded_pen.setColor(QColor(160, 160, 160)) + faded_pen.setCapStyle(Qt.FlatCap) + + font = QFont("Monospace") + font.setPointSize(12) + p.setFont(font) + p.setBrush(QColor(160, 0, 0)) + + for x in range(-6, 9): + + if x % 4 == 0: + length = 6 + else: + length = 2 + + p.drawLine(64 + x * width, 4, 64 + x * width, 4 + length) + p.drawLine(64 + x * width, 136, 64 + x * width, 136 - length) + + offsets = (0, 2, 3.5, 4, 5, 6) + for i in range(len(offsets)): + + offset = offsets[i] + pen.setDashOffset(offset) + + p.setPen(faded_pen) + p.drawLine(64 - offset * width, 20 + (i * 20), 64, 20 + (i * 20)) + + p.setPen(pen) + p.drawLine(64, 20 + (i * 20), 128, 20 + (i * 20)) + + p.drawText(150, 25 + (i * 20), str(offset)) + + p.end() + device.save("qpen-dashpattern.png") + sys.exit() |