📄 mainwindow.cpp
字号:
/******************************************************************************** Copyright (C) 2004-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 "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); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -