zoukankan      html  css  js  c++  java
  • QT QStringListModel 示例代码

    1.  QStringListModel , 实现 插入 删除 编辑 list,支持鼠标双击编辑。 

    2. dialog.h

    #ifndef DIALOG_H
    #define DIALOG_H
    
    #include <QDialog>
    #include <QtGui>
    
    class Dialog : public QDialog
    {
        Q_OBJECT
        
    public:
        Dialog(const QStringList &leaders, QWidget *parent = 0);
    
    public slots:
        void insertName();
        void deleteName();
        void editName();
    
    private:
        QListView *listView;
        QStringListModel *model;
    
    };
    
    #endif // DIALOG_H
    


     

    dialog.cpp

    #include "dialog.h"
    #include <QtGui>
    
    Dialog::Dialog(const QStringList &leaders,QWidget *parent)
        : QDialog(parent)
    {
        model = new QStringListModel;
        model->setStringList(leaders);
    
        listView = new QListView;
        listView->setModel(model);
    
        QPushButton *insertButton = new QPushButton(tr("insert"));
        QPushButton *deleteButton = new QPushButton(tr("delete"));
        QPushButton *editButton = new QPushButton(tr("edit"));
        connect(insertButton, SIGNAL(clicked()), this, SLOT(insertName()));
        connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteName()));
        connect(editButton, SIGNAL(clicked()), this, SLOT(editName()));
    
        QHBoxLayout *hLayout = new QHBoxLayout;
        hLayout->addWidget(insertButton);
        hLayout->addWidget(deleteButton);
        hLayout->addWidget(editButton);
        QVBoxLayout *vLayout = new QVBoxLayout;
        vLayout->addWidget(listView);
        vLayout->addLayout(hLayout);
    
        setLayout(vLayout);
    }
    
    void Dialog::insertName()
    {
        bool ok;
        QString name = QInputDialog::getText(this, tr("New Name"), tr(""),
                                             QLineEdit::Normal, tr(""), &ok );
        if( ok && !name.isEmpty() )
        {
            int row = listView->currentIndex().row();
            model->insertRows(row,1);
            QModelIndex index = model->index(row);
            model->setData(index, name);
            listView->setCurrentIndex(index);
        }
    }
    
    void Dialog::deleteName()
    {
        model->removeRows(listView->currentIndex().row(), 1);
    }
    
    void Dialog::editName()
    {
        int row = listView->currentIndex().row();
        QModelIndex index = model->index(row);
        QVariant variant = model->data(index, Qt::DisplayRole);
        QString name = variant.toString();
        bool ok;
        name = QInputDialog::getText(this, tr("Edit name"), tr(""), QLineEdit::Normal, tr(""), &ok);
        if( ok && !name.isEmpty() )
        {
            row = listView->currentIndex().row();
            index = model->index(row);
            model->setData(index, name);
            listView->setCurrentIndex(index);
        }
    }
    

    main.cpp

    #include "dialog.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QStringList leaders;
        leaders << "test1" << "test2" << "test3" ;
        Dialog w(leaders);
        w.show();
        
        return a.exec();
    }
    



     

  • 相关阅读:
    SpringMVC 配置文件详解
    SpringMVC 入门demo
    SpringMVC 简介
    解决IDEA部署web项目时,jar包拷贝不全的问题
    录制 带鼠标光圈效果的视频
    Spring整合Junit4进行单元测试
    Illegal invocation with document.querySelector [duplicate]
    html-webpack-template, 一个更好的html web service插件
    Script error.解决方法
    ios9 safari currentTime audio bug
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648211.html
Copyright © 2011-2022 走看看