main.cpp
来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 543 行 · 第 1/2 页
CPP
543 行
featureTree->setExpanded(index, false); }}void Main::updateStatus(int numFeatures){ QSettings settings; QString featureFile = settings.value("featureFile").toString(); QString configFile = settings.value("lastConfig").toString(); QString message("Using features from %1"); if (numFeatures >= 0) { QString s("%1 features loaded from %2"); statusBar()->showMessage(s.arg(numFeatures).arg(featureFile)); } QString appName = QApplication::applicationName(); if (configFile.isEmpty()) configFile = "New File"; setWindowTitle(appName + " - " + configFile + "[*]");}void Main::modelChanged(){ setWindowModified(true);}void Main::init(){ QSettings settings; QString features = settings.value("featureFile").toString(); if (features.isEmpty() || !QFileInfo(features).isFile()) { features = QFileDialog::getOpenFileName(this, "Open a feature file", defaultPath, "Qt Features (qfeatures.txt)"); } settings.setValue("featureFile", features); loadFeatures(features); expandView(); collapseView(); QString confFile = settings.value("lastConfig").toString(); if (confFile.isEmpty()) return; loadConfig(confFile);}void Main::openConfig(){ QSettings settings; QString configDir; QString prevFile = settings.value("lastConfig").toString(); if (!prevFile.isEmpty()) configDir = QFileInfo(prevFile).path(); if (configDir.isEmpty()) configDir = defaultPath; QString configFile; configFile = QFileDialog::getOpenFileName(this, "Open a configuration file", configDir, "Header files (*.h)"); enableAll(); if (!configFile.isEmpty()) loadConfig(configFile); settings.setValue("lastConfig", QFileInfo(configFile).absoluteFilePath());}void Main::saveConfig(){ QSettings settings; QString configDir; QString prevFile = settings.value("lastConfig").toString(); if (!prevFile.isEmpty()) configDir = QFileInfo(prevFile).path(); if (configDir.isEmpty()) configDir = defaultPath; QString configFile; configFile = QFileDialog::getSaveFileName(this, "Save configuration file", configDir, "Header files (*.h)"); if (configFile.isEmpty()) return; QFile file(configFile); if (!file.open(QIODevice::WriteOnly)) { QMessageBox::warning(this,"Warning", "Cannot write to file " + configFile); return; } QTextStream stream(&file); FeatureTreeModel *model; model = static_cast<FeatureTreeModel*>(featureTree->model()); model->writeConfig(stream); settings.setValue("lastConfig", QFileInfo(configFile).absoluteFilePath()); setWindowModified(false); updateStatus();}void Main::loadConfig(const QString &filename){ if (!QFileInfo(filename).isFile()) return; QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::warning(this,"Warning", "Cannot open file " + filename); return; } QTextStream stream(&file); FeatureTreeModel *model; model = static_cast<FeatureTreeModel*>(featureTree->model()); model->readConfig(stream); QSettings settings; settings.setValue("lastConfig", QFileInfo(filename).absoluteFilePath()); setWindowModified(false); updateStatus();}void Main::loadFeatures(const QString &filename){ Feature::clear(); QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::warning(this,"Warning", "Cannot open file " + filename); return; } Feature *feature = 0; int numFeatures = 0; updateStatus(numFeatures); QTextStream s(&file); for (QString line = s.readLine(); !s.atEnd(); line = s.readLine()) { line = line.simplified(); if (line.isEmpty()) continue; if (line.startsWith('#')) continue; int colon = line.indexOf(':'); if (colon < 0) { // assume description QString description = feature->description().simplified(); description += " " + line; feature->setDescription(description); continue; } QString tag = line.left(colon); QString value = line.mid(colon+1).simplified(); if (tag == "Feature") { if (feature) featureModel->addFeature(feature); feature = Feature::getInstance(value); updateStatus(++numFeatures); } else if (tag == "Requires") { Q_ASSERT(feature); feature->setDependencies(value.split(' ', QString::SkipEmptyParts)); } else if (tag == "Name") { Q_ASSERT(feature); feature->setTitle(value); } else if (tag == "Section") { Q_ASSERT(feature); feature->setSection(value); } else if (tag == "SeeAlso") { Q_ASSERT(feature); feature->setRelations(value.split(' ', QString::SkipEmptyParts)); } else if (tag == "Description") { Q_ASSERT(feature); feature->setDescription(value); } } if (feature) featureModel->addFeature(feature); featureTree->resizeColumnToContents(0); QSettings settings; settings.setValue("featureFile", QFileInfo(filename).absoluteFilePath()); updateStatus();}void Main::showInfo(const QModelIndex &index){ FeatureTreeModel *model; model = static_cast<FeatureTreeModel*>(featureTree->model()); if (const Feature *feature = model->getFeature(index)) textBrowser->setHtml(feature->toHtml()); // Ensure index is visible QModelIndex parent = model->parent(index); while (parent.isValid()) { featureTree->setExpanded(parent, true); parent = model->parent(parent); } featureTree->scrollTo(index); featureTree->setCurrentIndex(index);}void Main::showInfo(const QString &feature){ const Feature *f = Feature::getInstance(feature); FeatureTreeModel *model; model = static_cast<FeatureTreeModel*>(featureTree->model()); showInfo(model->index(f));}void Main::about(){ QMessageBox::about(this, "About qconfig", "<p><b><font size=\"+2\">Qtopia Core build configuration</font></b></p>" "<p></p>" "<p>Version 2.0</p>" "<p>Copyright (C) 2001-2007 Trolltech ASA. All rights reserved.</p>" "<p></p>" "<p>This program is licensed to you under the terms of the GNU General " "Public License Version 2 as published by the Free Software Foundation. This " "gives you legal permission to copy, distribute and/or modify this software " "under certain conditions. For details, see the file 'LICENSE.GPL' that came with " "this software distribution. If you did not get the file, send email to " "info@trolltech.com.</p>\n\n<p>The program is provided AS IS with NO WARRANTY " "OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS " "FOR A PARTICULAR PURPOSE.</p>" );}void Main::aboutQt(){ QMessageBox::aboutQt( this, tr("qconfig") );}int main(int argc, char** argv){ QApplication app(argc,argv); app.setOrganizationDomain("trolltech.com"); app.setOrganizationName("Trolltech"); app.setApplicationName("QConfig"); Main m; defaultPath = QLibraryInfo::location(QLibraryInfo::PrefixPath) + "/src/corelib/global"; for (int i = 1; i < argc; ++i) { QString arg = argv[i]; if (arg == "-f" && i+1 < argc) m.loadFeatures(argv[++i]); else if (arg == "-c" && i+1 < argc) m.loadConfig(argv[++i]); } m.resize(m.sizeHint() + QSize(500,300)); m.show(); return app.exec();}#include "main.moc"
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?