Qt:Документация 4.3.2/itemviews-chart-mainwindow-cpp
Материал из Wiki.crossplatform.ru
Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
[править] mainwindow.cpp Example File
itemviews/chart/mainwindow.cpp
/**************************************************************************** ** ** Copyright (C) 2004-2007 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://trolltech.com/products/qt/licenses/licensing/opensource/ ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://trolltech.com/products/qt/licenses/licensing/licensingoverview ** or contact the sales department at sales@trolltech.com. ** ** In addition, as a special exception, Trolltech gives you certain ** additional rights. These rights are described in the Trolltech GPL ** Exception version 1.0, which can be found at ** http://www.trolltech.com/products/qt/gplexception/ and in the file ** GPL_EXCEPTION.txt in this package. ** ** In addition, as a special exception, Trolltech, as the sole copyright ** holder for Qt Designer, grants users of the Qt/Eclipse Integration ** plug-in the right for the Qt/Eclipse Integration to link to ** functionality provided by Qt Designer and its related libraries. ** ** Trolltech reserves all rights not expressly granted herein. ** ** Trolltech ASA (c) 2007 ** ** 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 "pieview.h" #include "mainwindow.h" MainWindow::MainWindow() { QMenu *fileMenu = new QMenu(tr("&File"), this); QAction *openAction = fileMenu->addAction(tr("&Open...")); openAction->setShortcut(QKeySequence(tr("Ctrl+O"))); QAction *saveAction = fileMenu->addAction(tr("&Save As...")); saveAction->setShortcut(QKeySequence(tr("Ctrl+S"))); QAction *quitAction = fileMenu->addAction(tr("E&xit")); quitAction->setShortcut(QKeySequence(tr("Ctrl+Q"))); setupModel(); setupViews(); connect(openAction, SIGNAL(triggered()), this, SLOT(openFile())); connect(saveAction, SIGNAL(triggered()), this, SLOT(saveFile())); connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); menuBar()->addMenu(fileMenu); statusBar(); openFile(":/Charts/qtdata.cht"); setWindowTitle(tr("Chart")); resize(640, 480); } void MainWindow::setupModel() { model = new QStandardItemModel(8, 2, this); model->setHeaderData(0, Qt::Horizontal, tr("Label")); model->setHeaderData(1, Qt::Horizontal, tr("Quantity")); } void MainWindow::setupViews() { QSplitter *splitter = new QSplitter; QTableView *table = new QTableView; pieChart = new PieView; splitter->addWidget(table); splitter->addWidget(pieChart); splitter->setStretchFactor(0, 0); splitter->setStretchFactor(1, 1); table->setModel(model); pieChart->setModel(model); QItemSelectionModel *selectionModel = new QItemSelectionModel(model); table->setSelectionModel(selectionModel); pieChart->setSelectionModel(selectionModel); setCentralWidget(splitter); } void MainWindow::openFile(const QString &path) { QString fileName; if (path.isNull()) fileName = QFileDialog::getOpenFileName(this, tr("Choose a data file"), "", "*.cht"); else fileName = path; if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QFile::ReadOnly | QFile::Text)) { QTextStream stream(&file); QString line; model->removeRows(0, model->rowCount(QModelIndex()), QModelIndex()); int row = 0; do { line = stream.readLine(); if (!line.isEmpty()) { model->insertRows(row, 1, QModelIndex()); QStringList pieces = line.split(",", QString::SkipEmptyParts); model->setData(model->index(row, 0, QModelIndex()), pieces.value(0)); model->setData(model->index(row, 1, QModelIndex()), pieces.value(1)); model->setData(model->index(row, 0, QModelIndex()), QColor(pieces.value(2)), Qt::DecorationRole); row++; } } while (!line.isEmpty()); file.close(); statusBar()->showMessage(tr("Loaded %1").arg(fileName), 2000); } } } void MainWindow::saveFile() { QString fileName = QFileDialog::getSaveFileName(this, tr("Save file as"), "", "*.cht"); if (!fileName.isEmpty()) { QFile file(fileName); QTextStream stream(&file); if (file.open(QFile::WriteOnly | QFile::Text)) { for (int row = 0; row < model->rowCount(QModelIndex()); ++row) { QStringList pieces; pieces.append(model->data(model->index(row, 0, QModelIndex()), Qt::DisplayRole).toString()); pieces.append(model->data(model->index(row, 1, QModelIndex()), Qt::DisplayRole).toString()); pieces.append(model->data(model->index(row, 0, QModelIndex()), Qt::DecorationRole).toString()); stream << pieces.join(",") << "\n"; } } file.close(); statusBar()->showMessage(tr("Saved %1").arg(fileName), 2000); } }
Copyright © 2007 Trolltech | Trademarks | Qt 4.3.2
|