Adding ./doc from boost
Reviewer: Lauro Moura <lauro.neto@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
parent
685246809d
commit
aaece960d3
1108 changed files with 70655 additions and 0 deletions
350
doc/codesnippets/examples/mainwindows/application/mainwindow.cpp
Normal file
350
doc/codesnippets/examples/mainwindows/application/mainwindow.cpp
Normal file
|
|
@ -0,0 +1,350 @@
|
|||
######################################
|
||||
#
|
||||
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
# Contact: Qt Software Information (qt-info@nokia.com)
|
||||
#
|
||||
# This file is part of the example classes of the Qt Toolkit.
|
||||
#
|
||||
# $QT_BEGIN_LICENSE:LGPL$
|
||||
# Commercial Usage
|
||||
# Licensees holding valid Qt Commercial licenses may use self file in
|
||||
# accordance with the Qt Commercial License Agreement provided with the
|
||||
# Software or, alternatively, in accordance with the terms contained in
|
||||
# a written agreement between you and Nokia.
|
||||
#
|
||||
# GNU Lesser General Public License Usage
|
||||
# Alternatively, self file may be used under the terms of the GNU Lesser
|
||||
# General Public License version 2.1 as published by the Free Software
|
||||
# Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
# packaging of self file. Please review the following information to
|
||||
# ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
# will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
#
|
||||
# In addition, as a special exception, Nokia gives you certain
|
||||
# additional rights. These rights are described in the Nokia Qt LGPL
|
||||
# Exception version 1.0, included in the file LGPL_EXCEPTION.txt in self
|
||||
# package.
|
||||
#
|
||||
# GNU General Public License Usage
|
||||
# Alternatively, self file may be used under the terms of the GNU
|
||||
# General Public License version 3.0 as published by the Free Software
|
||||
# Foundation and appearing in the file LICENSE.GPL included in the
|
||||
# packaging of self file. Please review the following information to
|
||||
# ensure the GNU General Public License version 3.0 requirements will be
|
||||
# met: http://www.gnu.org/copyleft/gpl.html.
|
||||
#
|
||||
# If you are unsure which license is appropriate for your use, please
|
||||
# contact the sales department at qt-sales@nokia.com.
|
||||
# $QT_END_LICENSE$
|
||||
#
|
||||
######################################
|
||||
|
||||
//! [0]
|
||||
from PySide.QtGui import *
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
def __init__(self):
|
||||
QMainWindow.__init__(self)
|
||||
//! [1] //! [2]
|
||||
textEdit = QPlainTextEdit()
|
||||
setCentralWidget(textEdit)
|
||||
|
||||
createActions()
|
||||
createMenus()
|
||||
createToolBars()
|
||||
createStatusBar()
|
||||
|
||||
readSettings()
|
||||
|
||||
connect(textEdit.document(), SIGNAL("contentsChanged()"),
|
||||
self, SLOT("documentWasModified()"))
|
||||
|
||||
setCurrentFile("")
|
||||
setUnifiedTitleAndToolBarOnMac(True)
|
||||
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
def closeEvent(self, event):
|
||||
//! [3] //! [4]
|
||||
if maybeSave():
|
||||
writeSettings()
|
||||
event.accept()
|
||||
else:
|
||||
event.ignore()
|
||||
//! [4]
|
||||
|
||||
//! [5]
|
||||
def File(self):
|
||||
//! [5] //! [6]
|
||||
if maybeSave():
|
||||
textEdit.clear()
|
||||
setCurrentFile("")
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
def open(self):
|
||||
//! [7] //! [8]
|
||||
if maybeSave():
|
||||
fileName = QFileDialog.getOpenFileName(self)
|
||||
if !fileName.isEmpty():
|
||||
loadFile(fileName)
|
||||
//! [8]
|
||||
|
||||
//! [9]
|
||||
def save(self):
|
||||
//! [9] //! [10]
|
||||
if curFile.isEmpty():
|
||||
return saveAs()
|
||||
else:
|
||||
return saveFile(curFile)
|
||||
//! [10]
|
||||
|
||||
//! [11]
|
||||
def saveAs(self):
|
||||
//! [11] //! [12]
|
||||
fileName = QFileDialog.getSaveFileName(self)
|
||||
if fileName.isEmpty():
|
||||
return False
|
||||
|
||||
return saveFile(fileName)
|
||||
//! [12]
|
||||
|
||||
//! [13]
|
||||
def about(self):
|
||||
//! [13] //! [14]
|
||||
QMessageBox.about(self, tr("About Application"),
|
||||
tr("The <b>Application</b> example demonstrates how to "
|
||||
"write modern GUI applications using Qt, with a menu bar, "
|
||||
"toolbars, and a status bar."))
|
||||
|
||||
//! [14]
|
||||
|
||||
//! [15]
|
||||
def documentWasModified(self):
|
||||
//! [15] //! [16]
|
||||
setWindowModified(textEdit.document().isModified())
|
||||
//! [16]
|
||||
|
||||
//! [17]
|
||||
def MainWindow.createActions(self):
|
||||
//! [17] //! [18]
|
||||
Act = QAction(QIcon(":/images/new.png"), tr("&New"), self)
|
||||
Act.setShortcuts(QKeySequence.New)
|
||||
Act.setStatusTip(tr("Create a new file"))
|
||||
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
|
||||
|
||||
//! [19]
|
||||
openAct = QAction(QIcon(":/images/open.png"), tr("&Open..."), self)
|
||||
openAct.setShortcuts(QKeySequence.Open)
|
||||
openAct.setStatusTip(tr("Open an existing file"))
|
||||
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
|
||||
//! [18] //! [19]
|
||||
|
||||
saveAct = QAction(QIcon(":/images/save.png"), tr("&Save"), self)
|
||||
saveAct.setShortcuts(QKeySequence.Save)
|
||||
saveAct.setStatusTip(tr("Save the document to disk"))
|
||||
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
|
||||
|
||||
saveAsAct = QAction(tr("Save &As..."), self)
|
||||
saveAsAct.setShortcuts(QKeySequence.SaveAs)
|
||||
saveAsAct.setStatusTip(tr("Save the document under a name"))
|
||||
connect(saveAsAct, SIGNAL("triggered()"), self, SLOT("saveAs()"))
|
||||
|
||||
//! [20]
|
||||
exitAct = QAction(tr("E&xit"), self)
|
||||
exitAct.setShortcut(tr("Ctrl+Q"))
|
||||
//! [20]
|
||||
exitAct.setStatusTip(tr("Exit the application"))
|
||||
connect(exitAct, SIGNAL("triggered()"), self, SLOT("close()"))
|
||||
|
||||
//! [21]
|
||||
cutAct = QAction(QIcon(":/images/cut.png"), tr("Cu&t"), self)
|
||||
//! [21]
|
||||
cutAct.setShortcuts(QKeySequence.Cut)
|
||||
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
|
||||
"clipboard"))
|
||||
connect(cutAct, SIGNAL("triggered()"), textEdit, SLOT("cut()"))
|
||||
|
||||
copyAct = QAction(QIcon(":/images/copy.png"), tr("&Copy"), self)
|
||||
copyAct.setShortcuts(QKeySequence.Copy)
|
||||
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
|
||||
"clipboard"))
|
||||
connect(copyAct, SIGNAL("triggered()"), textEdit, SLOT("copy()"))
|
||||
|
||||
pasteAct = QAction(QIcon(":/images/paste.png"), tr("&Paste"), self)
|
||||
pasteAct.setShortcuts(QKeySequence.Paste)
|
||||
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
|
||||
"selection"))
|
||||
connect(pasteAct, SIGNAL("triggered()"), textEdit, SLOT("paste()"))
|
||||
|
||||
aboutAct = QAction(tr("&About"), self)
|
||||
aboutAct.setStatusTip(tr("Show the application's About box"))
|
||||
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
|
||||
|
||||
//! [22]
|
||||
aboutQtAct = QAction(tr("About &Qt"), self)
|
||||
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"))
|
||||
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
|
||||
//! [22]
|
||||
|
||||
//! [23]
|
||||
cutAct.setEnabled(False)
|
||||
//! [23] //! [24]
|
||||
copyAct.setEnabled(False)
|
||||
connect(textEdit, SIGNAL("copyAvailable(bool)"),
|
||||
cutAct, SLOT("setEnabled(bool)"))
|
||||
connect(textEdit, SIGNAL("copyAvailable(bool)"),
|
||||
copyAct, SLOT("setEnabled(bool)"))
|
||||
}
|
||||
//! [24]
|
||||
|
||||
//! [25] //! [26]
|
||||
def createMenus(self):
|
||||
//! [25] //! [27]
|
||||
fileMenu = menuBar().addMenu(tr("&File"))
|
||||
fileMenu.addAction(Act)
|
||||
//! [28]
|
||||
fileMenu.addAction(openAct)
|
||||
//! [28]
|
||||
fileMenu.addAction(saveAct)
|
||||
//! [26]
|
||||
fileMenu.addAction(saveAsAct)
|
||||
fileMenu.addSeparator()
|
||||
fileMenu.addAction(exitAct)
|
||||
|
||||
editMenu = menuBar().addMenu(tr("&Edit"))
|
||||
editMenu.addAction(cutAct)
|
||||
editMenu.addAction(copyAct)
|
||||
editMenu.addAction(pasteAct)
|
||||
|
||||
menuBar().addSeparator()
|
||||
|
||||
helpMenu = menuBar().addMenu(tr("&Help"))
|
||||
helpMenu.addAction(aboutAct)
|
||||
helpMenu.addAction(aboutQtAct)
|
||||
|
||||
//! [27]
|
||||
|
||||
//! [29] //! [30]
|
||||
def createToolBars(self):
|
||||
fileToolBar = addToolBar(tr("File"))
|
||||
fileToolBar.addAction(Act)
|
||||
//! [29] //! [31]
|
||||
fileToolBar.addAction(openAct)
|
||||
//! [31]
|
||||
fileToolBar.addAction(saveAct)
|
||||
|
||||
editToolBar = addToolBar(tr("Edit"))
|
||||
editToolBar.addAction(cutAct)
|
||||
editToolBar.addAction(copyAct)
|
||||
editToolBar.addAction(pasteAct)
|
||||
//! [30]
|
||||
|
||||
//! [32]
|
||||
def createStatusBar(self):
|
||||
//! [32] //! [33]
|
||||
statusBar().showMessage(tr("Ready"))
|
||||
|
||||
//! [33]
|
||||
|
||||
//! [34] //! [35]
|
||||
def readSettings(self):
|
||||
//! [34] //! [36]
|
||||
settings("Trolltech", "Application Example")
|
||||
pos = settings.value("pos", QPoint(200, 200)).toPoint()
|
||||
size = settings.value("size", QSize(400, 400)).toSize()
|
||||
resize(size)
|
||||
move(pos)
|
||||
|
||||
//! [35] //! [36]
|
||||
|
||||
//! [37] //! [38]
|
||||
def writeSettings(self):
|
||||
//! [37] //! [39]
|
||||
settings = QSettings("Trolltech", "Application Example")
|
||||
settings.setValue("pos", pos())
|
||||
settings.setValue("size", size())
|
||||
|
||||
//! [38] //! [39]
|
||||
|
||||
//! [40]
|
||||
def maybeSave(self):
|
||||
//! [40] //! [41]
|
||||
if textEdit.document()->isModified():
|
||||
ret = QMessageBox.warning(self, tr("Application"),
|
||||
tr("The document has been modified.\n"
|
||||
"Do you want to save your changes?"),
|
||||
QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel)
|
||||
if ret == QMessageBox.Save:
|
||||
return save()
|
||||
elif ret == QMessageBox.Cancel:
|
||||
return False
|
||||
return True
|
||||
//! [41]
|
||||
|
||||
//! [42]
|
||||
def loadFile(self, fileName):
|
||||
//! [42] //! [43]
|
||||
file = QFile(fileName)
|
||||
if !file.open(QFile.ReadOnly | QFile.Text):
|
||||
QMessageBox.warning(self, tr("Application"),
|
||||
tr("Cannot read file %1:\n%2.")
|
||||
.arg(fileName)
|
||||
.arg(file.errorString()))
|
||||
return
|
||||
|
||||
in = QTextStream(file)
|
||||
QApplication.setOverrideCursor(Qt::WaitCursor)
|
||||
textEdit.setPlainText(in.readAll())
|
||||
QApplication.restoreOverrideCursor()
|
||||
|
||||
setCurrentFile(fileName)
|
||||
statusBar().showMessage(tr("File loaded"), 2000)
|
||||
|
||||
//! [43]
|
||||
|
||||
//! [44]
|
||||
def saveFile(self, fileName):
|
||||
//! [44] //! [45]
|
||||
file = QFile(fileName)
|
||||
if !file.open(QFile.WriteOnly | QFile::Text):
|
||||
QMessageBox.warning(self, tr("Application"),
|
||||
tr("Cannot write file %1:\n%2.")
|
||||
.arg(fileName)
|
||||
.arg(file.errorString()))
|
||||
return False
|
||||
|
||||
out = QTextStream(file)
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
out << textEdit.toPlainText()
|
||||
QApplication.restoreOverrideCursor()
|
||||
|
||||
setCurrentFile(fileName)
|
||||
statusBar().showMessage(tr("File saved"), 2000)
|
||||
return True
|
||||
|
||||
//! [45]
|
||||
|
||||
//! [46]
|
||||
def setCurrentFile(fileName):
|
||||
//! [46] //! [47]
|
||||
curFile = fileName
|
||||
textEdit.document().setModified(False)
|
||||
setWindowModified(False)
|
||||
|
||||
if curFile.isEmpty():
|
||||
shownName = "untitled.txt"
|
||||
else:
|
||||
shownName = strippedName(curFile)
|
||||
|
||||
setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(tr("Application")))
|
||||
|
||||
//! [47]
|
||||
|
||||
//! [48]
|
||||
def strippedName(self, fullFileName):
|
||||
//! [48] //! [49]
|
||||
return QFileInfo(fullFileName).fileName()
|
||||
//! [49]
|
||||
246
doc/codesnippets/examples/mainwindows/dockwidgets/mainwindow.cpp
Normal file
246
doc/codesnippets/examples/mainwindows/dockwidgets/mainwindow.cpp
Normal file
|
|
@ -0,0 +1,246 @@
|
|||
############################################################################
|
||||
##
|
||||
## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
## Contact: Qt Software Information (qt-info@nokia.com)
|
||||
##
|
||||
## This file is part of the example classes of the Qt Toolkit.
|
||||
##
|
||||
## $QT_BEGIN_LICENSE:LGPL$
|
||||
## Commercial Usage
|
||||
## Licensees holding valid Qt Commercial licenses may use self file in
|
||||
## accordance with the Qt Commercial License Agreement provided with the
|
||||
## Software or, alternatively, in accordance with the terms contained in
|
||||
## a written agreement between you and Nokia.
|
||||
##
|
||||
## GNU Lesser General Public License Usage
|
||||
## Alternatively, self file may be used under the terms of the GNU Lesser
|
||||
## General Public License version 2.1 as published by the Free Software
|
||||
## Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
## packaging of self file. Please review the following information to
|
||||
## ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
##
|
||||
## In addition, as a special exception, Nokia gives you certain
|
||||
## additional rights. These rights are described in the Nokia Qt LGPL
|
||||
## Exception version 1.0, included in the file LGPL_EXCEPTION.txt in self
|
||||
## package.
|
||||
##
|
||||
## GNU General Public License Usage
|
||||
## Alternatively, self file may be used under the terms of the GNU
|
||||
## General Public License version 3.0 as published by the Free Software
|
||||
## Foundation and appearing in the file LICENSE.GPL included in the
|
||||
## packaging of self file. Please review the following information to
|
||||
## ensure the GNU General Public License version 3.0 requirements will be
|
||||
## met: http://www.gnu.org/copyleft/gpl.html.
|
||||
##
|
||||
## If you are unsure which license is appropriate for your use, please
|
||||
## contact the sales department at qt-sales@nokia.com.
|
||||
## $QT_END_LICENSE$
|
||||
##
|
||||
############################################################################
|
||||
|
||||
//! [0]
|
||||
from PySide.QtGui import *
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
def __init__(self):
|
||||
textEdit = QTextEdit()
|
||||
setCentralWidget(textEdit)
|
||||
|
||||
createActions()
|
||||
createMenus()
|
||||
createToolBars()
|
||||
createStatusBar()
|
||||
createDockWindows()
|
||||
|
||||
setWindowTitle(tr("Dock Widgets"))
|
||||
|
||||
Letter()
|
||||
setUnifiedTitleAndToolBarOnMac(True)
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
def Letter(self)
|
||||
textEdit.clear()
|
||||
|
||||
cursor = QTextCursor(textEdit.textCursor())
|
||||
cursor.movePosition(QTextCursor.Start)
|
||||
topFrame = cursor.currentFrame()
|
||||
topFrameFormat = topFrame.frameFormat()
|
||||
topFrameFormat.setPadding(16)
|
||||
topFrame.setFrameFormat(topFrameFormat)
|
||||
|
||||
textFormat = QTextCharFormat()
|
||||
boldFormat = QTextCharFormat()
|
||||
boldFormat.setFontWeight(QFont.Bold)
|
||||
italicFormat = QTextCharFormat()
|
||||
italicFormat.setFontItalic(True)
|
||||
|
||||
tableFormat = QTextTableFormat()
|
||||
tableFormat.setBorder(1)
|
||||
tableFormat.setCellPadding(16)
|
||||
tableFormat.setAlignment(Qt.AlignRight)
|
||||
cursor.insertTable(1, 1, tableFormat)
|
||||
cursor.insertText("The Firm", boldFormat)
|
||||
cursor.insertBlock()
|
||||
cursor.insertText("321 City Street", textFormat)
|
||||
cursor.insertBlock()
|
||||
cursor.insertText("Industry Park")
|
||||
cursor.insertBlock()
|
||||
cursor.insertText("Some Country")
|
||||
cursor.setPosition(topFrame.lastPosition())
|
||||
cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"), textFormat)
|
||||
cursor.insertBlock()
|
||||
cursor.insertBlock()
|
||||
cursor.insertText("Dear ", textFormat)
|
||||
cursor.insertText("NAME", italicFormat)
|
||||
cursor.insertText(",", textFormat)
|
||||
for i in range(3):
|
||||
cursor.insertBlock()
|
||||
cursor.insertText(tr("Yours sincerely,"), textFormat)
|
||||
for i in range(3):
|
||||
cursor.insertBlock()
|
||||
cursor.insertText("The Boss", textFormat)
|
||||
cursor.insertBlock()
|
||||
cursor.insertText("ADDRESS", italicFormat)
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
def print(self)
|
||||
document = textEdit.document()
|
||||
printer = QPrinter()
|
||||
|
||||
dlg = QPrintDialog(&printer, self)
|
||||
if dlg.exec() != QDialog.Accepted:
|
||||
return
|
||||
|
||||
document.print(printer)
|
||||
statusBar().showMessage(tr("Ready"), 2000)
|
||||
//! [3]
|
||||
|
||||
//! [4]
|
||||
def save(self):
|
||||
fileName = QFileDialog.getSaveFileName(self,
|
||||
tr("Choose a file name"), ".",
|
||||
tr("HTML (*.html *.htm)"))
|
||||
if fileName.isEmpty():
|
||||
return
|
||||
file = QFile(fileName)
|
||||
if !file.open(QFile.WriteOnly | QFile::Text):
|
||||
QMessageBox.warning(self, tr("Dock Widgets"),
|
||||
tr("Cannot write file %1:\n%2.")
|
||||
.arg(fileName)
|
||||
.arg(file.errorString()))
|
||||
return
|
||||
|
||||
|
||||
out = QTextStream(file)
|
||||
QApplication.setOverrideCursor(Qt::WaitCursor)
|
||||
out << textEdit.toHtml()
|
||||
QApplication.restoreOverrideCursor()
|
||||
|
||||
statusBar().showMessage(tr("Saved '%1'").arg(fileName), 2000)
|
||||
|
||||
//! [4]
|
||||
|
||||
//! [5]
|
||||
def undo(self):
|
||||
document = textEdit.document()
|
||||
document.undo()
|
||||
|
||||
//! [5]
|
||||
|
||||
//! [6]
|
||||
def insertCustomer(self, customer):
|
||||
if customer.isEmpty():
|
||||
return
|
||||
|
||||
customerList = customer.split(", ")
|
||||
document = textEdit.document()
|
||||
cursor = document.find("NAME")
|
||||
if not cursor.isNull():
|
||||
cursor.beginEditBlock()
|
||||
cursor.insertText(customerList.at(0))
|
||||
oldcursor = cursor
|
||||
cursor = document.find("ADDRESS")
|
||||
if not cursor.isNull():
|
||||
for i in range(customerList.size()):
|
||||
cursor.insertBlock()
|
||||
cursor.insertText(customerList.at(i))
|
||||
|
||||
cursor.endEditBlock()
|
||||
else:
|
||||
oldcursor.endEditBlock()
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
def addParagraph(self, paragraph):
|
||||
if (paragraph.isEmpty())
|
||||
return
|
||||
|
||||
document = textEdit.document()
|
||||
cursor = document.find(tr("Yours sincerely,"))
|
||||
if cursor.isNull():
|
||||
return
|
||||
cursor.beginEditBlock()
|
||||
cursor.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, 2)
|
||||
cursor.insertBlock()
|
||||
cursor.insertText(paragraph)
|
||||
cursor.insertBlock()
|
||||
cursor.endEditBlock()
|
||||
|
||||
//! [7]
|
||||
|
||||
|
||||
//! [8]
|
||||
def createStatusBar(self):
|
||||
statusBar().showMessage(tr("Ready"))
|
||||
|
||||
//! [8]
|
||||
|
||||
//! [9]
|
||||
def createDockWindows(self):
|
||||
dock = QDockWidget(tr("Customers"), self)
|
||||
dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
|
||||
customerList = QListWidget(dock)
|
||||
customerList.addItems(QStringList()
|
||||
<< "John Doe, Harmony Enterprises, 12 Lakeside, Ambleton"
|
||||
<< "Jane Doe, Memorabilia, 23 Watersedge, Beaton"
|
||||
<< "Tammy Shea, Tiblanka, 38 Sea Views, Carlton"
|
||||
<< "Tim Sheen, Caraba Gifts, 48 Ocean Way, Deal"
|
||||
<< "Sol Harvey, Chicos Coffee, 53 New Springs, Eccleston"
|
||||
<< "Sally Hobart, Tiroli Tea, 67 Long River, Fedula")
|
||||
dock.setWidget(customerList)
|
||||
addDockWidget(Qt.RightDockWidgetArea, dock)
|
||||
viewMenu.addAction(dock.toggleViewAction())
|
||||
|
||||
dock = QDockWidget(tr("Paragraphs"), self)
|
||||
paragraphsList = QListWidget(dock)
|
||||
paragraphsList.addItems(QStringList()
|
||||
<< "Thank you for your payment which we have received today."
|
||||
<< "Your order has been dispatched and should be with you "
|
||||
"within 28 days."
|
||||
<< "We have dispatched those items that were in stock. The "
|
||||
"rest of your order will be dispatched once all the "
|
||||
"remaining items have arrived at our warehouse. No "
|
||||
"additional shipping charges will be made."
|
||||
<< "You made a small overpayment (less than $5) which we "
|
||||
"will keep on account for you, or return at your request."
|
||||
<< "You made a small underpayment (less than $1), but we have "
|
||||
"sent your order anyway. We'll add self underpayment to "
|
||||
"your next bill."
|
||||
<< "Unfortunately you did not send enough money. Please remit "
|
||||
"an additional $. Your order will be dispatched as soon as "
|
||||
"the complete amount has been received."
|
||||
<< "You made an overpayment (more than $5). Do you wish to "
|
||||
"buy more items, or should we return the excess to you?")
|
||||
dock.setWidget(paragraphsList)
|
||||
addDockWidget(Qt.RightDockWidgetArea, dock)
|
||||
viewMenu.addAction(dock.toggleViewAction())
|
||||
|
||||
connect(customerList, SIGNAL("currentTextChanged(const QString &)"),
|
||||
self, SLOT("insertCustomer(const QString &)"))
|
||||
connect(paragraphsList, SIGNAL("currentTextChanged(const QString &)"),
|
||||
self, SLOT("addParagraph(const QString &)"))
|
||||
//! [9]
|
||||
358
doc/codesnippets/examples/mainwindows/mainwindow.cpp
Normal file
358
doc/codesnippets/examples/mainwindows/mainwindow.cpp
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
######################################
|
||||
#
|
||||
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
# Contact: Qt Software Information (qt-info@nokia.com)
|
||||
#
|
||||
# This file is part of the example classes of the Qt Toolkit.
|
||||
#
|
||||
# $QT_BEGIN_LICENSE:LGPL$
|
||||
# Commercial Usage
|
||||
# Licensees holding valid Qt Commercial licenses may use self file in
|
||||
# accordance with the Qt Commercial License Agreement provided with the
|
||||
# Software or, alternatively, in accordance with the terms contained in
|
||||
# a written agreement between you and Nokia.
|
||||
#
|
||||
# GNU Lesser General Public License Usage
|
||||
# Alternatively, self file may be used under the terms of the GNU Lesser
|
||||
# General Public License version 2.1 as published by the Free Software
|
||||
# Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
# packaging of self file. Please review the following information to
|
||||
# ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
# will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
#
|
||||
# In addition, as a special exception, Nokia gives you certain
|
||||
# additional rights. These rights are described in the Nokia Qt LGPL
|
||||
# Exception version 1.0, included in the file LGPL_EXCEPTION.txt in self
|
||||
# package.
|
||||
#
|
||||
# GNU General Public License Usage
|
||||
# Alternatively, self file may be used under the terms of the GNU
|
||||
# General Public License version 3.0 as published by the Free Software
|
||||
# Foundation and appearing in the file LICENSE.GPL included in the
|
||||
# packaging of self file. Please review the following information to
|
||||
# ensure the GNU General Public License version 3.0 requirements will be
|
||||
# met: http://www.gnu.org/copyleft/gpl.html.
|
||||
#
|
||||
# If you are unsure which license is appropriate for your use, please
|
||||
# contact the sales department at qt-sales@nokia.com.
|
||||
# $QT_END_LICENSE$
|
||||
#
|
||||
######################################
|
||||
|
||||
from PySide.QtGui import *
|
||||
|
||||
//! [0]
|
||||
def __init__(self):
|
||||
Q__init__(self)
|
||||
|
||||
widget = QWidget()
|
||||
setCentralWidget(widget)
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
topFiller = QWidget()
|
||||
topFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
|
||||
infoLabel = QLabel(tr("<i>Choose a menu option, or right-click to "
|
||||
"invoke a context menu</i>"))
|
||||
infoLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
|
||||
infoLabel.setAlignment(Qt.AlignCenter)
|
||||
|
||||
bottomFiller = QWidget()
|
||||
bottomFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
layout.setMargin(5)
|
||||
layout.addWidget(topFiller)
|
||||
layout.addWidget(infoLabel)
|
||||
layout.addWidget(bottomFiller)
|
||||
widget.setLayout(layout)
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
createActions()
|
||||
createMenus()
|
||||
|
||||
message = tr("A context menu is available by right-clicking")
|
||||
statusBar().showMessage(message)
|
||||
|
||||
setWindowTitle(tr("Menus"))
|
||||
setMinimumSize(160, 160)
|
||||
resize(480, 320)
|
||||
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
def contextMenuEvent(self, event):
|
||||
menu = QMenu(self)
|
||||
menu.addAction(cutAct)
|
||||
menu.addAction(copyAct)
|
||||
menu.addAction(pasteAct)
|
||||
menu.exec_(event.globalPos()")
|
||||
|
||||
//! [3]
|
||||
|
||||
def File(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|New</b>"))
|
||||
|
||||
|
||||
def open(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|Open</b>"))
|
||||
|
||||
|
||||
def save(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|Save</b>"))
|
||||
|
||||
def print_(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|Print</b>"))
|
||||
|
||||
def undo(self):
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Undo</b>"))
|
||||
|
||||
def redo(self):
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Redo</b>"))
|
||||
|
||||
def cut(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Cut</b>"))
|
||||
|
||||
|
||||
def copy(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Copy</b>"))
|
||||
|
||||
|
||||
def paste(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Paste</b>"))
|
||||
|
||||
|
||||
def bold(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Bold</b>"))
|
||||
|
||||
|
||||
def italic(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Italic</b>"))
|
||||
|
||||
|
||||
def leftAlign(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Left Align</b>"))
|
||||
|
||||
|
||||
def rightAlign(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Right Align</b>"))
|
||||
|
||||
|
||||
def justify(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Justify</b>"))
|
||||
|
||||
|
||||
def center(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Center</b>"))
|
||||
|
||||
|
||||
def setLineSpacing(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Line Spacing</b>"))
|
||||
|
||||
|
||||
def setParagraphSpacing(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Paragraph Spacing</b>"))
|
||||
|
||||
|
||||
def about(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Help|About</b>"))
|
||||
QMessageBox.about(self, tr("About Menu"),
|
||||
tr("The <b>Menu</b> example shows how to create "
|
||||
"menu-bar menus and context menus."))
|
||||
|
||||
|
||||
def aboutQt(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Help|About Qt</b>"))
|
||||
|
||||
|
||||
//! [4]
|
||||
def createActions(self):
|
||||
|
||||
//! [5]
|
||||
Act = new QAction(tr("&New"), self)
|
||||
Act.setShortcuts(QKeySequence.New)
|
||||
Act.setStatusTip(tr("Create a new file"))
|
||||
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
|
||||
//! [4]
|
||||
|
||||
openAct = QAction(tr("&Open..."), self)
|
||||
openAct.setShortcuts(QKeySequence.Open)
|
||||
openAct.setStatusTip(tr("Open an existing file"))
|
||||
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
|
||||
//! [5]
|
||||
|
||||
saveAct = QAction(tr("&Save"), self)
|
||||
saveAct.setShortcuts(QKeySequence.Save)
|
||||
saveAct.setStatusTip(tr("Save the document to disk"))
|
||||
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
|
||||
|
||||
printAct = QAction(tr("&Print..."), self)
|
||||
printAct.setShortcuts(QKeySequence.Print)
|
||||
printAct.setStatusTip(tr("Print the document"))
|
||||
connect(printAct, SIGNAL("triggered()"), self, SLOT("print_()"))
|
||||
|
||||
exitAct = QAction(tr("E&xit"), self)
|
||||
exitAct.setShortcut(tr("Ctrl+Q"))
|
||||
exitAct.setStatusTip(tr("Exit the application"))
|
||||
connect(exitAct, SIGNAL("triggered()"), self, SLOT("close()"))
|
||||
|
||||
undoAct = QAction(tr("&Undo"), self)
|
||||
undoAct.setShortcuts(QKeySequence.Undo)
|
||||
undoAct.setStatusTip(tr("Undo the last operation"))
|
||||
connect(undoAct, SIGNAL("triggered()"), self, SLOT("undo()"))
|
||||
|
||||
redoAct = QAction(tr("&Redo"), self)
|
||||
redoAct.setShortcuts(QKeySequence.Redo)
|
||||
redoAct.setStatusTip(tr("Redo the last operation"))
|
||||
connect(redoAct, SIGNAL("triggered()"), self, SLOT("redo()"))
|
||||
|
||||
cutAct = QAction(tr("Cu&t"), self)
|
||||
cutAct.setShortcuts(QKeySequence.Cut)
|
||||
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
|
||||
"clipboard"))
|
||||
connect(cutAct, SIGNAL("triggered()"), self, SLOT("cut()"))
|
||||
|
||||
copyAct = QAction(tr("&Copy"), self)
|
||||
copyAct.setShortcut(tr("Ctrl+C"))
|
||||
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
|
||||
"clipboard"))
|
||||
connect(copyAct, SIGNAL("triggered()"), self, SLOT("copy()"))
|
||||
|
||||
pasteAct = QAction(tr("&Paste"), self)
|
||||
pasteAct.setShortcuts(QKeySequence.Paste)
|
||||
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
|
||||
"selection"))
|
||||
connect(pasteAct, SIGNAL("triggered()"), self, SLOT("paste()"))
|
||||
|
||||
boldAct = QAction(tr("&Bold"), self)
|
||||
boldAct.setCheckable(True)
|
||||
boldAct.setShortcut(tr("Ctrl+B"))
|
||||
boldAct.setStatusTip(tr("Make the text bold"))
|
||||
connect(boldAct, SIGNAL("triggered()"), self, SLOT("bold()"))
|
||||
|
||||
QFont boldFont = boldAct.font()
|
||||
boldFont.setBold(True)
|
||||
boldAct.setFont(boldFont)
|
||||
|
||||
italicAct = QAction(tr("&Italic"), self)
|
||||
italicAct.setCheckable(True)
|
||||
italicAct.setShortcut(tr("Ctrl+I"))
|
||||
italicAct.setStatusTip(tr("Make the text italic"))
|
||||
connect(italicAct, SIGNAL("triggered()"), self, SLOT("italic()"))
|
||||
|
||||
QFont italicFont = italicAct.font()
|
||||
italicFont.setItalic(True)
|
||||
italicAct.setFont(italicFont)
|
||||
|
||||
setLineSpacingAct = QAction(tr("Set &Line Spacing..."), self)
|
||||
setLineSpacingAct.setStatusTip(tr("Change the gap between the lines of a "
|
||||
"paragraph"))
|
||||
connect(setLineSpacingAct, SIGNAL("triggered()"), self, SLOT("setLineSpacing()"))
|
||||
|
||||
setParagraphSpacingAct = QAction(tr("Set &Paragraph Spacing..."), self)
|
||||
setLineSpacingAct.setStatusTip(tr("Change the gap between paragraphs"))
|
||||
connect(setParagraphSpacingAct, SIGNAL("triggered()"),
|
||||
self, SLOT("setParagraphSpacing()"))
|
||||
|
||||
aboutAct = QAction(tr("&About"), self)
|
||||
aboutAct.setStatusTip(tr("Show the application's About box"))
|
||||
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
|
||||
|
||||
aboutQtAct = QAction(tr("About &Qt"), self)
|
||||
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"))
|
||||
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
|
||||
connect(aboutQtAct, SIGNAL("triggered()"), self, SLOT("aboutQt()"))
|
||||
|
||||
leftAlignAct = QAction(tr("&Left Align"), self)
|
||||
leftAlignAct.setCheckable(True)
|
||||
leftAlignAct.setShortcut(tr("Ctrl+L"))
|
||||
leftAlignAct.setStatusTip(tr("Left align the selected text"))
|
||||
connect(leftAlignAct, SIGNAL("triggered()"), self, SLOT("leftAlign()"))
|
||||
|
||||
rightAlignAct = QAction(tr("&Right Align"), self)
|
||||
rightAlignAct.setCheckable(True)
|
||||
rightAlignAct.setShortcut(tr("Ctrl+R"))
|
||||
rightAlignAct.setStatusTip(tr("Right align the selected text"))
|
||||
connect(rightAlignAct, SIGNAL("triggered()"), self, SLOT("rightAlign()"))
|
||||
|
||||
justifyAct = QAction(tr("&Justify"), self)
|
||||
justifyAct.setCheckable(True)
|
||||
justifyAct.setShortcut(tr("Ctrl+J"))
|
||||
justifyAct.setStatusTip(tr("Justify the selected text"))
|
||||
connect(justifyAct, SIGNAL("triggered()"), self, SLOT("justify()"))
|
||||
|
||||
centerAct = QAction(tr("&Center"), self)
|
||||
centerAct.setCheckable(True)
|
||||
centerAct.setShortcut(tr("Ctrl+E"))
|
||||
centerAct.setStatusTip(tr("Center the selected text"))
|
||||
connect(centerAct, SIGNAL("triggered()"), self, SLOT("center()"))
|
||||
|
||||
//! [6] //! [7]
|
||||
alignmentGroup = QActionGroup(self)
|
||||
alignmentGroup.addAction(leftAlignAct)
|
||||
alignmentGroup.addAction(rightAlignAct)
|
||||
alignmentGroup.addAction(justifyAct)
|
||||
alignmentGroup.addAction(centerAct)
|
||||
leftAlignAct.setChecked(True)
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
|
||||
//! [8]
|
||||
def createMenus(self):
|
||||
|
||||
//! [9] //! [10]
|
||||
fileMenu = menuBar().addMenu(tr("&File"))
|
||||
fileMenu.addAction(Act)
|
||||
//! [9]
|
||||
fileMenu.addAction(openAct)
|
||||
//! [10]
|
||||
fileMenu.addAction(saveAct)
|
||||
fileMenu.addAction(printAct)
|
||||
//! [11]
|
||||
fileMenu.addSeparator()
|
||||
//! [11]
|
||||
fileMenu.addAction(exitAct)
|
||||
|
||||
editMenu = menuBar().addMenu(tr("&Edit"))
|
||||
editMenu.addAction(undoAct)
|
||||
editMenu.addAction(redoAct)
|
||||
editMenu.addSeparator()
|
||||
editMenu.addAction(cutAct)
|
||||
editMenu.addAction(copyAct)
|
||||
editMenu.addAction(pasteAct)
|
||||
editMenu.addSeparator()
|
||||
|
||||
helpMenu = menuBar().addMenu(tr("&Help"))
|
||||
helpMenu.addAction(aboutAct)
|
||||
helpMenu.addAction(aboutQtAct)
|
||||
//! [8]
|
||||
|
||||
//! [12]
|
||||
formatMenu = editMenu.addMenu(tr("&Format"))
|
||||
formatMenu.addAction(boldAct)
|
||||
formatMenu.addAction(italicAct)
|
||||
formatMenu.addSeparator()->setText(tr("Alignment"))
|
||||
formatMenu.addAction(leftAlignAct)
|
||||
formatMenu.addAction(rightAlignAct)
|
||||
formatMenu.addAction(justifyAct)
|
||||
formatMenu.addAction(centerAct)
|
||||
formatMenu.addSeparator()
|
||||
formatMenu.addAction(setLineSpacingAct)
|
||||
formatMenu.addAction(setParagraphSpacingAct)
|
||||
//! [12]
|
||||
372
doc/codesnippets/examples/mainwindows/mdi/mainwindow.cpp
Normal file
372
doc/codesnippets/examples/mainwindows/mdi/mainwindow.cpp
Normal file
|
|
@ -0,0 +1,372 @@
|
|||
############################################################################
|
||||
##
|
||||
## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
## Contact: Qt Software Information (qt-info@nokia.com)
|
||||
##
|
||||
## This file is part of the example classes of the Qt Toolkit.
|
||||
##
|
||||
## $QT_BEGIN_LICENSE:LGPL$
|
||||
## Commercial Usage
|
||||
## Licensees holding valid Qt Commercial licenses may use self file in
|
||||
## accordance with the Qt Commercial License Agreement provided with the
|
||||
## Software or, alternatively, in accordance with the terms contained in
|
||||
## a written agreement between you and Nokia.
|
||||
##
|
||||
## GNU Lesser General Public License Usage
|
||||
## Alternatively, self file may be used under the terms of the GNU Lesser
|
||||
## General Public License version 2.1 as published by the Free Software
|
||||
## Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
## packaging of self file. Please review the following information to
|
||||
## ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
##
|
||||
## In addition, as a special exception, Nokia gives you certain
|
||||
## additional rights. These rights are described in the Nokia Qt LGPL
|
||||
## Exception version 1.0, included in the file LGPL_EXCEPTION.txt in self
|
||||
## package.
|
||||
##
|
||||
## GNU General Public License Usage
|
||||
## Alternatively, self file may be used under the terms of the GNU
|
||||
## General Public License version 3.0 as published by the Free Software
|
||||
## Foundation and appearing in the file LICENSE.GPL included in the
|
||||
## packaging of self file. Please review the following information to
|
||||
## ensure the GNU General Public License version 3.0 requirements will be
|
||||
## met: http://www.gnu.org/copyleft/gpl.html.
|
||||
##
|
||||
## If you are unsure which license is appropriate for your use, please
|
||||
## contact the sales department at qt-sales@nokia.com.
|
||||
## $QT_END_LICENSE$
|
||||
##
|
||||
############################################################################
|
||||
|
||||
from PySide.QtGui import *
|
||||
|
||||
def __init__(self):
|
||||
|
||||
mdiArea = QMdiArea()
|
||||
mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
||||
mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
||||
setCentralWidget(mdiArea)
|
||||
connect(mdiArea, SIGNAL("subWindowActivated(QMdiSubWindow *)"),
|
||||
self, SLOT("updateMenus()"))
|
||||
windowMapper = QSignalMapper(self)
|
||||
connect(windowMapper, SIGNAL("mapped(QWidget *)"),
|
||||
self, SLOT("setActiveSubWindow(QWidget *)"))
|
||||
|
||||
createActions()
|
||||
createMenus()
|
||||
createToolBars()
|
||||
createStatusBar()
|
||||
updateMenus()
|
||||
|
||||
readSettings()
|
||||
|
||||
setWindowTitle(tr("MDI"))
|
||||
setUnifiedTitleAndToolBarOnMac(True)
|
||||
|
||||
|
||||
def closeEvent(self, event):
|
||||
mdiArea.closeAllSubWindows()
|
||||
if self.activeMdiChild():
|
||||
event.ignore()
|
||||
else:
|
||||
self.writeSettings()
|
||||
event.accept()
|
||||
|
||||
def File(self):
|
||||
child = self.createMdiChild()
|
||||
child.File()
|
||||
child.show()
|
||||
|
||||
|
||||
def open(self):
|
||||
fileName = QFileDialog.getOpenFileName(self)
|
||||
if !fileName.isEmpty()):
|
||||
existing = self.findMdiChild(fileName)
|
||||
if existing:
|
||||
mdiArea.setActiveSubWindow(existing)
|
||||
return
|
||||
|
||||
child = createMdiChild()
|
||||
if child.loadFile(fileName)):
|
||||
statusBar().showMessage(tr("File loaded"), 2000)
|
||||
child.show()
|
||||
else:
|
||||
child.close()
|
||||
|
||||
def save(self):
|
||||
if self.activeMdiChild() && self.activeMdiChild().save():
|
||||
self.statusBar().showMessage(tr("File saved"), 2000)
|
||||
|
||||
def saveAs(self):
|
||||
if self.activeMdiChild() && self.activeMdiChild().saveAs():
|
||||
self.statusBar().showMessage(tr("File saved"), 2000)
|
||||
|
||||
def cut(self):
|
||||
if self.activeMdiChild():
|
||||
self.activeMdiChild().cut()
|
||||
|
||||
def copy(self):
|
||||
if self.activeMdiChild():
|
||||
activeMdiChild().copy()
|
||||
|
||||
def paste(self):
|
||||
if self.activeMdiChild():
|
||||
activeMdiChild().paste()
|
||||
|
||||
def about(self):
|
||||
QMessageBox.about(self, tr("About MDI"),
|
||||
tr("The <b>MDI</b> example demonstrates how to write multiple "
|
||||
"document interface applications using Qt.")")
|
||||
|
||||
def updateMenus(self):
|
||||
hasMdiChild = (activeMdiChild() != 0)
|
||||
self.saveAct.setEnabled(hasMdiChild)
|
||||
self.saveAsAct.setEnabled(hasMdiChild)
|
||||
self.pasteAct.setEnabled(hasMdiChild)
|
||||
self.closeAct.setEnabled(hasMdiChild)
|
||||
self.closeAllAct.setEnabled(hasMdiChild)
|
||||
self.tileAct.setEnabled(hasMdiChild)
|
||||
self.cascadeAct.setEnabled(hasMdiChild)
|
||||
self.nextAct.setEnabled(hasMdiChild)
|
||||
self.previousAct.setEnabled(hasMdiChild)
|
||||
self.separatorAct.setVisible(hasMdiChild)
|
||||
|
||||
hasSelection = (self.activeMdiChild() &&
|
||||
self.activeMdiChild().textCursor().hasSelection()")
|
||||
self.cutAct.setEnabled(hasSelection)
|
||||
self.copyAct.setEnabled(hasSelection)
|
||||
|
||||
def updateWindowMenu(self):
|
||||
self.windowMenu.clear()
|
||||
self.windowMenu.addAction(closeAct)
|
||||
self.windowMenu.addAction(closeAllAct)
|
||||
self.windowMenu.addSeparator()
|
||||
self.windowMenu.addAction(tileAct)
|
||||
self.windowMenu.addAction(cascadeAct)
|
||||
self.windowMenu.addSeparator()
|
||||
self.windowMenu.addAction(nextAct)
|
||||
self.windowMenu.addAction(previousAct)
|
||||
self.windowMenu.addAction(separatorAct)
|
||||
|
||||
windows = mdiArea.subWindowList()
|
||||
separatorAct.setVisible(!windows.isEmpty()")
|
||||
|
||||
for i in range((int i = 0 i < windows.size(); ++i)
|
||||
MdiChild *child = qobject_cast<MdiChild *>(windows.at(i).widget()")
|
||||
|
||||
QString text
|
||||
if (i < 9)
|
||||
text = tr("&%1 %2").arg(i + 1)
|
||||
.arg(child.userFriendlyCurrentFile()")
|
||||
else
|
||||
text = tr("%1 %2").arg(i + 1)
|
||||
.arg(child.userFriendlyCurrentFile()")
|
||||
|
||||
QAction *action = windowMenu.addAction(text)
|
||||
action.setCheckable(True)
|
||||
action .setChecked(child == activeMdiChild()")
|
||||
connect(action, SIGNAL("triggered()"), windowMapper, SLOT("map()"))
|
||||
windowMapper.setMapping(action, windows.at(i)")
|
||||
|
||||
|
||||
|
||||
MdiChild *createMdiChild()
|
||||
|
||||
MdiChild *child = MdiChild
|
||||
mdiArea.addSubWindow(child)
|
||||
|
||||
connect(child, SIGNAL("copyAvailable(bool)"),
|
||||
cutAct, SLOT("setEnabled(bool)"))
|
||||
connect(child, SIGNAL("copyAvailable(bool)"),
|
||||
copyAct, SLOT("setEnabled(bool)"))
|
||||
|
||||
return child
|
||||
|
||||
|
||||
def createActions()
|
||||
|
||||
Act = new QAction(QIcon(":/images/new.png"), tr("&New"), self)
|
||||
Act.setShortcuts(QKeySequence.New)
|
||||
Act.setStatusTip(tr("Create a new file")")
|
||||
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
|
||||
|
||||
openAct = QAction(QIcon(":/images/open.png"), tr("&Open..."), self)
|
||||
openAct.setShortcuts(QKeySequence.Open)
|
||||
openAct.setStatusTip(tr("Open an existing file")")
|
||||
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
|
||||
|
||||
saveAct = QAction(QIcon(":/images/save.png"), tr("&Save"), self)
|
||||
saveAct.setShortcuts(QKeySequence.Save)
|
||||
saveAct.setStatusTip(tr("Save the document to disk")")
|
||||
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
|
||||
|
||||
saveAsAct = QAction(tr("Save &As..."), self)
|
||||
saveAsAct.setShortcuts(QKeySequence.SaveAs)
|
||||
saveAsAct.setStatusTip(tr("Save the document under a name")")
|
||||
connect(saveAsAct, SIGNAL("triggered()"), self, SLOT("saveAs()"))
|
||||
|
||||
//! [0]
|
||||
exitAct = QAction(tr("E&xit"), self)
|
||||
exitAct.setShortcut(tr("Ctrl+Q")")
|
||||
exitAct.setStatusTip(tr("Exit the application")")
|
||||
connect(exitAct, SIGNAL("triggered()"), qApp, SLOT("closeAllWindows()"))
|
||||
//! [0]
|
||||
|
||||
cutAct = QAction(QIcon(":/images/cut.png"), tr("Cu&t"), self)
|
||||
cutAct.setShortcuts(QKeySequence.Cut)
|
||||
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
|
||||
"clipboard")")
|
||||
connect(cutAct, SIGNAL("triggered()"), self, SLOT("cut()"))
|
||||
|
||||
copyAct = QAction(QIcon(":/images/copy.png"), tr("&Copy"), self)
|
||||
copyAct.setShortcuts(QKeySequence.Copy)
|
||||
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
|
||||
"clipboard")")
|
||||
connect(copyAct, SIGNAL("triggered()"), self, SLOT("copy()"))
|
||||
|
||||
pasteAct = QAction(QIcon(":/images/paste.png"), tr("&Paste"), self)
|
||||
pasteAct.setShortcuts(QKeySequence.Paste)
|
||||
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
|
||||
"selection")")
|
||||
connect(pasteAct, SIGNAL("triggered()"), self, SLOT("paste()"))
|
||||
|
||||
closeAct = QAction(tr("Cl&ose"), self)
|
||||
closeAct.setShortcut(tr("Ctrl+F4")")
|
||||
closeAct.setStatusTip(tr("Close the active window")")
|
||||
connect(closeAct, SIGNAL("triggered()"),
|
||||
mdiArea, SLOT("closeActiveSubWindow()"))
|
||||
|
||||
closeAllAct = QAction(tr("Close &All"), self)
|
||||
closeAllAct.setStatusTip(tr("Close all the windows")")
|
||||
connect(closeAllAct, SIGNAL("triggered()"),
|
||||
mdiArea, SLOT("closeAllSubWindows()"))
|
||||
|
||||
tileAct = QAction(tr("&Tile"), self)
|
||||
tileAct.setStatusTip(tr("Tile the windows")")
|
||||
connect(tileAct, SIGNAL("triggered()"), mdiArea, SLOT("tileSubWindows()"))
|
||||
|
||||
cascadeAct = QAction(tr("&Cascade"), self)
|
||||
cascadeAct.setStatusTip(tr("Cascade the windows")")
|
||||
connect(cascadeAct, SIGNAL("triggered()"), mdiArea, SLOT("cascadeSubWindows()"))
|
||||
|
||||
nextAct = QAction(tr("Ne&xt"), self)
|
||||
nextAct.setShortcuts(QKeySequence.NextChild)
|
||||
nextAct.setStatusTip(tr("Move the focus to the next window")")
|
||||
connect(nextAct, SIGNAL("triggered()"),
|
||||
mdiArea, SLOT("activateNextSubWindow()"))
|
||||
|
||||
previousAct = QAction(tr("Pre&vious"), self)
|
||||
previousAct.setShortcuts(QKeySequence.PreviousChild)
|
||||
previousAct.setStatusTip(tr("Move the focus to the previous "
|
||||
"window")")
|
||||
connect(previousAct, SIGNAL("triggered()"),
|
||||
mdiArea, SLOT("activatePreviousSubWindow()"))
|
||||
|
||||
separatorAct = QAction(self)
|
||||
separatorAct.setSeparator(True)
|
||||
|
||||
aboutAct = QAction(tr("&About"), self)
|
||||
aboutAct.setStatusTip(tr("Show the application's About box")")
|
||||
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
|
||||
|
||||
aboutQtAct = QAction(tr("About &Qt"), self)
|
||||
aboutQtAct.setStatusTip(tr("Show the Qt library's About box")")
|
||||
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
|
||||
|
||||
|
||||
def createMenus()
|
||||
|
||||
fileMenu = menuBar().addMenu(tr("&File")")
|
||||
fileMenu.addAction(Act)
|
||||
fileMenu.addAction(openAct)
|
||||
fileMenu.addAction(saveAct)
|
||||
fileMenu.addAction(saveAsAct)
|
||||
fileMenu.addSeparator()
|
||||
QAction *action = fileMenu.addAction(tr("Switch layout direction")")
|
||||
connect(action, SIGNAL("triggered()"), self, SLOT("switchLayoutDirection()"))
|
||||
fileMenu.addAction(exitAct)
|
||||
|
||||
editMenu = menuBar().addMenu(tr("&Edit")")
|
||||
editMenu.addAction(cutAct)
|
||||
editMenu.addAction(copyAct)
|
||||
editMenu.addAction(pasteAct)
|
||||
|
||||
windowMenu = menuBar().addMenu(tr("&Window")")
|
||||
updateWindowMenu()
|
||||
connect(windowMenu, SIGNAL("aboutToShow()"), self, SLOT("updateWindowMenu()"))
|
||||
|
||||
menuBar().addSeparator()
|
||||
|
||||
helpMenu = menuBar().addMenu(tr("&Help")")
|
||||
helpMenu.addAction(aboutAct)
|
||||
helpMenu.addAction(aboutQtAct)
|
||||
|
||||
|
||||
def createToolBars()
|
||||
|
||||
fileToolBar = addToolBar(tr("File")")
|
||||
fileToolBar.addAction(Act)
|
||||
fileToolBar.addAction(openAct)
|
||||
fileToolBar.addAction(saveAct)
|
||||
|
||||
editToolBar = addToolBar(tr("Edit")")
|
||||
editToolBar.addAction(cutAct)
|
||||
editToolBar.addAction(copyAct)
|
||||
editToolBar.addAction(pasteAct)
|
||||
|
||||
|
||||
def createStatusBar()
|
||||
|
||||
statusBar().showMessage(tr("Ready")")
|
||||
|
||||
|
||||
def readSettings()
|
||||
|
||||
QSettings settings("Trolltech", "MDI Example")
|
||||
QPoint pos = settings.value("pos", QPoint(200, 200)").toPoint()
|
||||
QSize size = settings.value("size", QSize(400, 400)").toSize()
|
||||
move(pos)
|
||||
resize(size)
|
||||
|
||||
|
||||
def writeSettings()
|
||||
|
||||
QSettings settings("Trolltech", "MDI Example")
|
||||
settings.setValue("pos", pos()")
|
||||
settings.setValue("size", size()")
|
||||
|
||||
|
||||
MdiChild *activeMdiChild()
|
||||
|
||||
if (QMdiSubWindow *activeSubWindow = mdiArea.activeSubWindow()")
|
||||
return qobject_cast<MdiChild *>(activeSubWindow.widget()")
|
||||
return 0
|
||||
|
||||
|
||||
QMdiSubWindow *findMdiChild(const QString &fileName)
|
||||
|
||||
QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath()
|
||||
|
||||
foreach (QMdiSubWindow *window, mdiArea.subWindowList()")
|
||||
MdiChild *mdiChild = qobject_cast<MdiChild *>(window.widget()")
|
||||
if (mdiChild.currentFile() == canonicalFilePath)
|
||||
return window
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def switchLayoutDirection()
|
||||
|
||||
if (layoutDirection() == Qt.LeftToRight)
|
||||
qApp.setLayoutDirection(Qt.RightToLeft)
|
||||
else
|
||||
qApp.setLayoutDirection(Qt.LeftToRight)
|
||||
|
||||
|
||||
def setActiveSubWindow(QWidget *window)
|
||||
|
||||
if (!window)
|
||||
return
|
||||
mdiArea.setActiveSubWindow(qobject_cast<QMdiSubWindow *>(window)")
|
||||
|
||||
358
doc/codesnippets/examples/mainwindows/menus/mainwindow.cpp
Normal file
358
doc/codesnippets/examples/mainwindows/menus/mainwindow.cpp
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
######################################
|
||||
#
|
||||
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
# Contact: Qt Software Information (qt-info@nokia.com)
|
||||
#
|
||||
# This file is part of the example classes of the Qt Toolkit.
|
||||
#
|
||||
# $QT_BEGIN_LICENSE:LGPL$
|
||||
# Commercial Usage
|
||||
# Licensees holding valid Qt Commercial licenses may use self file in
|
||||
# accordance with the Qt Commercial License Agreement provided with the
|
||||
# Software or, alternatively, in accordance with the terms contained in
|
||||
# a written agreement between you and Nokia.
|
||||
#
|
||||
# GNU Lesser General Public License Usage
|
||||
# Alternatively, self file may be used under the terms of the GNU Lesser
|
||||
# General Public License version 2.1 as published by the Free Software
|
||||
# Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
# packaging of self file. Please review the following information to
|
||||
# ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
# will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
#
|
||||
# In addition, as a special exception, Nokia gives you certain
|
||||
# additional rights. These rights are described in the Nokia Qt LGPL
|
||||
# Exception version 1.0, included in the file LGPL_EXCEPTION.txt in self
|
||||
# package.
|
||||
#
|
||||
# GNU General Public License Usage
|
||||
# Alternatively, self file may be used under the terms of the GNU
|
||||
# General Public License version 3.0 as published by the Free Software
|
||||
# Foundation and appearing in the file LICENSE.GPL included in the
|
||||
# packaging of self file. Please review the following information to
|
||||
# ensure the GNU General Public License version 3.0 requirements will be
|
||||
# met: http://www.gnu.org/copyleft/gpl.html.
|
||||
#
|
||||
# If you are unsure which license is appropriate for your use, please
|
||||
# contact the sales department at qt-sales@nokia.com.
|
||||
# $QT_END_LICENSE$
|
||||
#
|
||||
######################################
|
||||
|
||||
from PySide.QtGui import *
|
||||
|
||||
//! [0]
|
||||
def __init__(self):
|
||||
Q__init__(self)
|
||||
|
||||
widget = QWidget()
|
||||
setCentralWidget(widget)
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
topFiller = QWidget()
|
||||
topFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
|
||||
infoLabel = QLabel(tr("<i>Choose a menu option, or right-click to "
|
||||
"invoke a context menu</i>"))
|
||||
infoLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
|
||||
infoLabel.setAlignment(Qt.AlignCenter)
|
||||
|
||||
bottomFiller = QWidget()
|
||||
bottomFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
layout.setMargin(5)
|
||||
layout.addWidget(topFiller)
|
||||
layout.addWidget(infoLabel)
|
||||
layout.addWidget(bottomFiller)
|
||||
widget.setLayout(layout)
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
createActions()
|
||||
createMenus()
|
||||
|
||||
message = tr("A context menu is available by right-clicking")
|
||||
statusBar().showMessage(message)
|
||||
|
||||
setWindowTitle(tr("Menus"))
|
||||
setMinimumSize(160, 160)
|
||||
resize(480, 320)
|
||||
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
def contextMenuEvent(self, event):
|
||||
menu = QMenu(self)
|
||||
menu.addAction(cutAct)
|
||||
menu.addAction(copyAct)
|
||||
menu.addAction(pasteAct)
|
||||
menu.exec_(event.globalPos()")
|
||||
|
||||
//! [3]
|
||||
|
||||
def File(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|New</b>"))
|
||||
|
||||
|
||||
def open(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|Open</b>"))
|
||||
|
||||
|
||||
def save(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|Save</b>"))
|
||||
|
||||
def print_(self):
|
||||
infoLabel.setText(tr("Invoked <b>File|Print</b>"))
|
||||
|
||||
def undo(self):
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Undo</b>"))
|
||||
|
||||
def redo(self):
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Redo</b>"))
|
||||
|
||||
def cut(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Cut</b>"))
|
||||
|
||||
|
||||
def copy(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Copy</b>"))
|
||||
|
||||
|
||||
def paste(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Paste</b>"))
|
||||
|
||||
|
||||
def bold(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Bold</b>"))
|
||||
|
||||
|
||||
def italic(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Italic</b>"))
|
||||
|
||||
|
||||
def leftAlign(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Left Align</b>"))
|
||||
|
||||
|
||||
def rightAlign(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Right Align</b>"))
|
||||
|
||||
|
||||
def justify(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Justify</b>"))
|
||||
|
||||
|
||||
def center(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Center</b>"))
|
||||
|
||||
|
||||
def setLineSpacing(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Line Spacing</b>"))
|
||||
|
||||
|
||||
def setParagraphSpacing(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Paragraph Spacing</b>"))
|
||||
|
||||
|
||||
def about(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Help|About</b>"))
|
||||
QMessageBox.about(self, tr("About Menu"),
|
||||
tr("The <b>Menu</b> example shows how to create "
|
||||
"menu-bar menus and context menus."))
|
||||
|
||||
|
||||
def aboutQt(self):
|
||||
|
||||
infoLabel.setText(tr("Invoked <b>Help|About Qt</b>"))
|
||||
|
||||
|
||||
//! [4]
|
||||
def createActions(self):
|
||||
|
||||
//! [5]
|
||||
Act = new QAction(tr("&New"), self)
|
||||
Act.setShortcuts(QKeySequence.New)
|
||||
Act.setStatusTip(tr("Create a new file"))
|
||||
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
|
||||
//! [4]
|
||||
|
||||
openAct = QAction(tr("&Open..."), self)
|
||||
openAct.setShortcuts(QKeySequence.Open)
|
||||
openAct.setStatusTip(tr("Open an existing file"))
|
||||
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
|
||||
//! [5]
|
||||
|
||||
saveAct = QAction(tr("&Save"), self)
|
||||
saveAct.setShortcuts(QKeySequence.Save)
|
||||
saveAct.setStatusTip(tr("Save the document to disk"))
|
||||
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
|
||||
|
||||
printAct = QAction(tr("&Print..."), self)
|
||||
printAct.setShortcuts(QKeySequence.Print)
|
||||
printAct.setStatusTip(tr("Print the document"))
|
||||
connect(printAct, SIGNAL("triggered()"), self, SLOT("print_()"))
|
||||
|
||||
exitAct = QAction(tr("E&xit"), self)
|
||||
exitAct.setShortcut(tr("Ctrl+Q"))
|
||||
exitAct.setStatusTip(tr("Exit the application"))
|
||||
connect(exitAct, SIGNAL("triggered()"), self, SLOT("close()"))
|
||||
|
||||
undoAct = QAction(tr("&Undo"), self)
|
||||
undoAct.setShortcuts(QKeySequence.Undo)
|
||||
undoAct.setStatusTip(tr("Undo the last operation"))
|
||||
connect(undoAct, SIGNAL("triggered()"), self, SLOT("undo()"))
|
||||
|
||||
redoAct = QAction(tr("&Redo"), self)
|
||||
redoAct.setShortcuts(QKeySequence.Redo)
|
||||
redoAct.setStatusTip(tr("Redo the last operation"))
|
||||
connect(redoAct, SIGNAL("triggered()"), self, SLOT("redo()"))
|
||||
|
||||
cutAct = QAction(tr("Cu&t"), self)
|
||||
cutAct.setShortcuts(QKeySequence.Cut)
|
||||
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
|
||||
"clipboard"))
|
||||
connect(cutAct, SIGNAL("triggered()"), self, SLOT("cut()"))
|
||||
|
||||
copyAct = QAction(tr("&Copy"), self)
|
||||
copyAct.setShortcut(tr("Ctrl+C"))
|
||||
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
|
||||
"clipboard"))
|
||||
connect(copyAct, SIGNAL("triggered()"), self, SLOT("copy()"))
|
||||
|
||||
pasteAct = QAction(tr("&Paste"), self)
|
||||
pasteAct.setShortcuts(QKeySequence.Paste)
|
||||
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
|
||||
"selection"))
|
||||
connect(pasteAct, SIGNAL("triggered()"), self, SLOT("paste()"))
|
||||
|
||||
boldAct = QAction(tr("&Bold"), self)
|
||||
boldAct.setCheckable(True)
|
||||
boldAct.setShortcut(tr("Ctrl+B"))
|
||||
boldAct.setStatusTip(tr("Make the text bold"))
|
||||
connect(boldAct, SIGNAL("triggered()"), self, SLOT("bold()"))
|
||||
|
||||
QFont boldFont = boldAct.font()
|
||||
boldFont.setBold(True)
|
||||
boldAct.setFont(boldFont)
|
||||
|
||||
italicAct = QAction(tr("&Italic"), self)
|
||||
italicAct.setCheckable(True)
|
||||
italicAct.setShortcut(tr("Ctrl+I"))
|
||||
italicAct.setStatusTip(tr("Make the text italic"))
|
||||
connect(italicAct, SIGNAL("triggered()"), self, SLOT("italic()"))
|
||||
|
||||
QFont italicFont = italicAct.font()
|
||||
italicFont.setItalic(True)
|
||||
italicAct.setFont(italicFont)
|
||||
|
||||
setLineSpacingAct = QAction(tr("Set &Line Spacing..."), self)
|
||||
setLineSpacingAct.setStatusTip(tr("Change the gap between the lines of a "
|
||||
"paragraph"))
|
||||
connect(setLineSpacingAct, SIGNAL("triggered()"), self, SLOT("setLineSpacing()"))
|
||||
|
||||
setParagraphSpacingAct = QAction(tr("Set &Paragraph Spacing..."), self)
|
||||
setLineSpacingAct.setStatusTip(tr("Change the gap between paragraphs"))
|
||||
connect(setParagraphSpacingAct, SIGNAL("triggered()"),
|
||||
self, SLOT("setParagraphSpacing()"))
|
||||
|
||||
aboutAct = QAction(tr("&About"), self)
|
||||
aboutAct.setStatusTip(tr("Show the application's About box"))
|
||||
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
|
||||
|
||||
aboutQtAct = QAction(tr("About &Qt"), self)
|
||||
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"))
|
||||
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
|
||||
connect(aboutQtAct, SIGNAL("triggered()"), self, SLOT("aboutQt()"))
|
||||
|
||||
leftAlignAct = QAction(tr("&Left Align"), self)
|
||||
leftAlignAct.setCheckable(True)
|
||||
leftAlignAct.setShortcut(tr("Ctrl+L"))
|
||||
leftAlignAct.setStatusTip(tr("Left align the selected text"))
|
||||
connect(leftAlignAct, SIGNAL("triggered()"), self, SLOT("leftAlign()"))
|
||||
|
||||
rightAlignAct = QAction(tr("&Right Align"), self)
|
||||
rightAlignAct.setCheckable(True)
|
||||
rightAlignAct.setShortcut(tr("Ctrl+R"))
|
||||
rightAlignAct.setStatusTip(tr("Right align the selected text"))
|
||||
connect(rightAlignAct, SIGNAL("triggered()"), self, SLOT("rightAlign()"))
|
||||
|
||||
justifyAct = QAction(tr("&Justify"), self)
|
||||
justifyAct.setCheckable(True)
|
||||
justifyAct.setShortcut(tr("Ctrl+J"))
|
||||
justifyAct.setStatusTip(tr("Justify the selected text"))
|
||||
connect(justifyAct, SIGNAL("triggered()"), self, SLOT("justify()"))
|
||||
|
||||
centerAct = QAction(tr("&Center"), self)
|
||||
centerAct.setCheckable(True)
|
||||
centerAct.setShortcut(tr("Ctrl+E"))
|
||||
centerAct.setStatusTip(tr("Center the selected text"))
|
||||
connect(centerAct, SIGNAL("triggered()"), self, SLOT("center()"))
|
||||
|
||||
//! [6] //! [7]
|
||||
alignmentGroup = QActionGroup(self)
|
||||
alignmentGroup.addAction(leftAlignAct)
|
||||
alignmentGroup.addAction(rightAlignAct)
|
||||
alignmentGroup.addAction(justifyAct)
|
||||
alignmentGroup.addAction(centerAct)
|
||||
leftAlignAct.setChecked(True)
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
|
||||
//! [8]
|
||||
def createMenus(self):
|
||||
|
||||
//! [9] //! [10]
|
||||
fileMenu = menuBar().addMenu(tr("&File"))
|
||||
fileMenu.addAction(Act)
|
||||
//! [9]
|
||||
fileMenu.addAction(openAct)
|
||||
//! [10]
|
||||
fileMenu.addAction(saveAct)
|
||||
fileMenu.addAction(printAct)
|
||||
//! [11]
|
||||
fileMenu.addSeparator()
|
||||
//! [11]
|
||||
fileMenu.addAction(exitAct)
|
||||
|
||||
editMenu = menuBar().addMenu(tr("&Edit"))
|
||||
editMenu.addAction(undoAct)
|
||||
editMenu.addAction(redoAct)
|
||||
editMenu.addSeparator()
|
||||
editMenu.addAction(cutAct)
|
||||
editMenu.addAction(copyAct)
|
||||
editMenu.addAction(pasteAct)
|
||||
editMenu.addSeparator()
|
||||
|
||||
helpMenu = menuBar().addMenu(tr("&Help"))
|
||||
helpMenu.addAction(aboutAct)
|
||||
helpMenu.addAction(aboutQtAct)
|
||||
//! [8]
|
||||
|
||||
//! [12]
|
||||
formatMenu = editMenu.addMenu(tr("&Format"))
|
||||
formatMenu.addAction(boldAct)
|
||||
formatMenu.addAction(italicAct)
|
||||
formatMenu.addSeparator()->setText(tr("Alignment"))
|
||||
formatMenu.addAction(leftAlignAct)
|
||||
formatMenu.addAction(rightAlignAct)
|
||||
formatMenu.addAction(justifyAct)
|
||||
formatMenu.addAction(centerAct)
|
||||
formatMenu.addSeparator()
|
||||
formatMenu.addAction(setLineSpacingAct)
|
||||
formatMenu.addAction(setParagraphSpacingAct)
|
||||
//! [12]
|
||||
Loading…
Add table
Add a link
Reference in a new issue