saveformastemplate.cpp
来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 146 行
CPP
146 行
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the Qt Designer 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.**** 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 "saveformastemplate.h"#include "qdesigner_settings.h"#include "preferencesdialog.h"#include <QtCore/QFile>#include <QtGui/QFileDialog>#include <QtGui/QMessageBox>#include <QtGui/QPushButton>#include <QtDesigner/abstractformwindow.h>SaveFormAsTemplate::SaveFormAsTemplate(QDesignerFormWindowInterface *formWindow, QWidget *parent) : QDialog(parent, Qt::Sheet), m_formWindow(formWindow){ ui.setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); ui.templateNameEdit->setText(formWindow->mainContainer()->objectName()); ui.templateNameEdit->selectAll(); ui.templateNameEdit->setFocus(); QDesignerSettings settings; QStringList paths = settings.formTemplatePaths(); ui.categoryCombo->addItems(paths); ui.categoryCombo->addItem(tr("Add path...")); m_addPathIndex = ui.categoryCombo->count() - 1; connect(ui.templateNameEdit, SIGNAL(textChanged(QString)), this, SLOT(updateOKButton(QString))); connect(ui.categoryCombo, SIGNAL(activated(int)), this, SLOT(checkToAddPath(int)));}SaveFormAsTemplate::~SaveFormAsTemplate(){}void SaveFormAsTemplate::accept(){ QString templateFileName = ui.categoryCombo->currentText(); templateFileName += QLatin1Char('/'); const QString name = ui.templateNameEdit->text(); templateFileName += name; const QString extension = QLatin1String(".ui"); if (!templateFileName.endsWith(extension)) templateFileName.append(extension); QFile file(templateFileName); if (file.exists()) { QMessageBox msgBox(QMessageBox::Information, tr("Template Exists"), tr("A template with the name %1 already exists.\n" "Do you want overwrite the template?").arg(name), QMessageBox::Cancel, m_formWindow); msgBox.setDefaultButton(QMessageBox::Cancel); QPushButton *overwriteButton = msgBox.addButton(tr("Overwrite Template"), QMessageBox::AcceptRole); msgBox.exec(); if (msgBox.clickedButton() != overwriteButton) return; } while (!file.open(QFile::WriteOnly)) { if (QMessageBox::information(m_formWindow, tr("Open Error"), tr("There was an error opening template %1 for writing. Reason: %2").arg(name).arg(file.errorString()), QMessageBox::Retry|QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) { return; } } QByteArray ba = m_formWindow->contents().toUtf8(); while (file.write(ba) != ba.size()) { if (QMessageBox::information(m_formWindow, tr("Write Error"), tr("There was an error writing the template %1 to disk. Reason: %2").arg(name).arg(file.errorString()), QMessageBox::Retry|QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) { file.close(); file.remove(); return; } file.reset(); } // update the list of places too... QStringList sl; for (int i = 0; i < m_addPathIndex; ++i) sl << ui.categoryCombo->itemText(i); QDesignerSettings().setFormTemplatePaths(sl); QDialog::accept();}void SaveFormAsTemplate::updateOKButton(const QString &str){ QPushButton *okButton = ui.buttonBox->button(QDialogButtonBox::Ok); okButton->setEnabled(!str.isEmpty());}void SaveFormAsTemplate::checkToAddPath(int itemIndex){ if (itemIndex != m_addPathIndex) return; const QString dir = PreferencesDialog::chooseTemplatePath(this); if (dir.isEmpty()) { ui.categoryCombo->setCurrentIndex(0); return; } ui.categoryCombo->insertItem(m_addPathIndex, dir); ui.categoryCombo->setCurrentIndex(m_addPathIndex); ++m_addPathIndex;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?