⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "detailsdialog.h"#include "mainwindow.h"MainWindow::MainWindow(){    QMenu *fileMenu = new QMenu(tr("&File"), this);    QAction *newAction = fileMenu->addAction(tr("&New..."));    newAction->setShortcut(tr("Ctrl+N"));    printAction = fileMenu->addAction(tr("&Print..."), this, SLOT(printFile()));    printAction->setShortcut(tr("Ctrl+P"));    printAction->setEnabled(false);    QAction *quitAction = fileMenu->addAction(tr("E&xit"));    quitAction->setShortcut(tr("Ctrl+Q"));    menuBar()->addMenu(fileMenu);    letters = new QTabWidget;    connect(newAction, SIGNAL(triggered()), this, SLOT(openDialog()));    connect(quitAction, SIGNAL(triggered()), this, SLOT(close()));    setCentralWidget(letters);    setWindowTitle(tr("Order Form"));}void MainWindow::createLetter(const QString &name, const QString &address,                              QList<QPair<QString,int> > orderItems,                              bool sendOffers){    QTextEdit *editor = new QTextEdit;    int tabIndex = letters->addTab(editor, name);    letters->setCurrentIndex(tabIndex);    QTextCursor cursor(editor->textCursor());    cursor.movePosition(QTextCursor::Start);    QTextFrame *topFrame = cursor.currentFrame();    QTextFrameFormat topFrameFormat = topFrame->frameFormat();    topFrameFormat.setPadding(16);    topFrame->setFrameFormat(topFrameFormat);    QTextCharFormat textFormat;    QTextCharFormat boldFormat;    boldFormat.setFontWeight(QFont::Bold);    QTextFrameFormat referenceFrameFormat;    referenceFrameFormat.setBorder(1);    referenceFrameFormat.setPadding(8);    referenceFrameFormat.setPosition(QTextFrameFormat::FloatRight);    referenceFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 40));    cursor.insertFrame(referenceFrameFormat);    cursor.insertText("A company", boldFormat);    cursor.insertBlock();    cursor.insertText("321 City Street");    cursor.insertBlock();    cursor.insertText("Industry Park");    cursor.insertBlock();    cursor.insertText("Another country");    cursor.setPosition(topFrame->lastPosition());    cursor.insertText(name, textFormat);    QString line;    foreach (line, address.split("\n")) {        cursor.insertBlock();        cursor.insertText(line);    }    cursor.insertBlock();    cursor.insertBlock();    QDate date = QDate::currentDate();    cursor.insertText(tr("Date: %1").arg(date.toString("d MMMM yyyy")),                      textFormat);    cursor.insertBlock();    QTextFrameFormat bodyFrameFormat;    bodyFrameFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100));    cursor.insertFrame(bodyFrameFormat);    cursor.insertText(tr("I would like to place an order for the following "                         "items:"), textFormat);    cursor.insertBlock();    QTextTableFormat orderTableFormat;    orderTableFormat.setAlignment(Qt::AlignHCenter);    QTextTable *orderTable = cursor.insertTable(1, 2, orderTableFormat);    QTextFrameFormat orderFrameFormat = cursor.currentFrame()->frameFormat();    orderFrameFormat.setBorder(1);    cursor.currentFrame()->setFrameFormat(orderFrameFormat);    cursor = orderTable->cellAt(0, 0).firstCursorPosition();    cursor.insertText(tr("Product"), boldFormat);    cursor = orderTable->cellAt(0, 1).firstCursorPosition();    cursor.insertText(tr("Quantity"), boldFormat);    for (int i = 0; i < orderItems.count(); ++i) {        QPair<QString,int> item = orderItems[i];        int row = orderTable->rows();        orderTable->insertRows(row, 1);        cursor = orderTable->cellAt(row, 0).firstCursorPosition();        cursor.insertText(item.first, textFormat);        cursor = orderTable->cellAt(row, 1).firstCursorPosition();        cursor.insertText(QString("%1").arg(item.second), textFormat);    }    cursor.setPosition(topFrame->lastPosition());    cursor.insertText(tr("Please update my records to take account of the "                         "following privacy information:"));    cursor.insertBlock();    QTextTable *offersTable = cursor.insertTable(2, 2);    cursor = offersTable->cellAt(0, 1).firstCursorPosition();    cursor.insertText(tr("I want to receive more information about your "                         "company's products and special offers."), textFormat);    cursor = offersTable->cellAt(1, 1).firstCursorPosition();    cursor.insertText(tr("I do not want to receive any promotional information "                         "from your company."), textFormat);    if (sendOffers)        cursor = offersTable->cellAt(0, 0).firstCursorPosition();    else        cursor = offersTable->cellAt(1, 0).firstCursorPosition();    cursor.insertText("X", boldFormat);    cursor.setPosition(topFrame->lastPosition());    cursor.insertBlock();    cursor.insertText(tr("Sincerely,"), textFormat);    cursor.insertBlock();    cursor.insertBlock();    cursor.insertBlock();    cursor.insertText(name);    printAction->setEnabled(true);}void MainWindow::createSample(){    DetailsDialog dialog("Dialog with default values", this);    createLetter("Mr Smith", "12 High Street\nSmall Town\nThis country",                 dialog.orderItems(), true);}void MainWindow::openDialog(){    DetailsDialog dialog(tr("Enter Customer Details"), this);    if (dialog.exec() == QDialog::Accepted)        createLetter(dialog.senderName(), dialog.senderAddress(),                     dialog.orderItems(), dialog.sendOffers());}void MainWindow::printFile(){    QTextEdit *editor = static_cast<QTextEdit*>(letters->currentWidget());    QTextDocument *document = editor->document();    QPrinter printer;    QPrintDialog *dialog = new QPrintDialog(&printer, this);    dialog->setWindowTitle(tr("Print Document"));    if (dialog->exec() != QDialog::Accepted)        return;    document->print(&printer);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -