stringlisteditor.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 204 行

CPP
204
字号
/******************************************************************************** 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 "stringlisteditor.h"#include <iconloader_p.h>#include <QtGui/QStringListModel>using namespace qdesigner_internal;StringListEditor::StringListEditor(QWidget *parent)    : QDialog(parent), m_model(new QStringListModel(this)){    setupUi(this);    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);    listView->setModel(m_model);    connect(listView->selectionModel(),            SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),            this, SLOT(currentIndexChanged(const QModelIndex &, const QModelIndex &)));    connect(listView->itemDelegate(),            SIGNAL(closeEditor(QWidget *, QAbstractItemDelegate::EndEditHint)),            this, SLOT(currentValueChanged()));    QIcon upIcon = createIconSet(QString::fromUtf8("up.png"));    QIcon downIcon = createIconSet(QString::fromUtf8("down.png"));    QIcon minusIcon = createIconSet(QString::fromUtf8("minus.png"));    QIcon plusIcon = createIconSet(QString::fromUtf8("plus.png"));    upButton->setIcon(upIcon);    downButton->setIcon(downIcon);    newButton->setIcon(plusIcon);    deleteButton->setIcon(minusIcon);    updateUi();}StringListEditor::~StringListEditor(){}QStringList StringListEditor::getStringList(QWidget *parent, const QStringList &init, int *result){    StringListEditor dlg(parent);    dlg.setStringList(init);    int res = dlg.exec();    if (result)        *result = res;    return (res == QDialog::Accepted) ? dlg.stringList() : init;}void StringListEditor::setStringList(const QStringList &stringList){    m_model->setStringList(stringList);    updateUi();}QStringList StringListEditor::stringList() const{    return m_model->stringList();}void StringListEditor::currentIndexChanged(const QModelIndex &current, const QModelIndex &previous){    Q_UNUSED(previous);    setCurrentIndex(current.row());    updateUi();}void StringListEditor::currentValueChanged(){    setCurrentIndex(currentIndex());    updateUi();}void StringListEditor::on_upButton_clicked(){    int from = currentIndex();    int to = currentIndex() - 1;    QString value = stringAt(from);    removeString(from);    insertString(to, value);    setCurrentIndex(to);    updateUi();}void StringListEditor::on_downButton_clicked(){    int from = currentIndex();    int to = currentIndex() + 1;    QString value = stringAt(from);    removeString(from);    insertString(to, value);    setCurrentIndex(to);    updateUi();}void StringListEditor::on_newButton_clicked(){    int to = currentIndex();    if (to == -1)        to = count() - 1;    ++to;    insertString(to, QString());    setCurrentIndex(to);    updateUi();    editString(to);}void StringListEditor::on_deleteButton_clicked(){    removeString(currentIndex());    setCurrentIndex(currentIndex());    updateUi();}void StringListEditor::on_valueEdit_textEdited(const QString &text){    setStringAt(currentIndex(), text);}void StringListEditor::updateUi(){    upButton->setEnabled((count() > 1) && (currentIndex() > 0));    downButton->setEnabled((count() > 1) && (currentIndex() >= 0) && (currentIndex() < (count() - 1)));    deleteButton->setEnabled(currentIndex() != -1);    valueEdit->setEnabled(currentIndex() != -1);}int StringListEditor::currentIndex() const{    return listView->currentIndex().row();}void StringListEditor::setCurrentIndex(int index){    QModelIndex modelIndex = m_model->index(index, 0);    if (listView->currentIndex() != modelIndex)        listView->setCurrentIndex(modelIndex);    valueEdit->setText(stringAt(index));}int StringListEditor::count() const{    return m_model->rowCount();}QString StringListEditor::stringAt(int index) const{    return qvariant_cast<QString>(m_model->data(m_model->index(index, 0), Qt::DisplayRole));}void StringListEditor::setStringAt(int index, const QString &value){    m_model->setData(m_model->index(index, 0), value);}void StringListEditor::removeString(int index){    m_model->removeRows(index, 1);}void StringListEditor::insertString(int index, const QString &value){    m_model->insertRows(index, 1);    m_model->setData(m_model->index(index, 0), value);}void StringListEditor::editString(int index){    listView->edit(m_model->index(index, 0));}

⌨️ 快捷键说明

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