• QStringListModel的使用


    主要为 :添加、插入、修改、删除、清空等操作

    例子:本例子中QListView 没有做任何处理,只是拖放至ui文件,设置了布局

    MainWindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QStringListModel>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private slots:
        void on_btnRecovery_clicked();
    
        void on_listView_clicked(const QModelIndex &index);
    
        void on_btnClearText_clicked();
    
        void on_btnShowModel_clicked();
    
        void on_btnAdd_clicked();
    
        void on_btnInsert_clicked();
    
        void on_btnDel_clicked();
    
        void on_btnClear_clicked();
    
    private:
        Ui::MainWindow *ui;
        QStringListModel *model;
    };
    #endif // MAINWINDOW_H
    

    MainWindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        model = new QStringListModel(this);
        QStringList list;
        list << "1" << "2" << "3";
        model->setStringList(list); //为model设置数据
        ui->listView->setModel(model);//为界面绑定model
        ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::SelectedClicked);//设置触发编辑的操作
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    /**
     * @brief MainWindow::on_btnRecovery_clicked 恢复
     */
    void MainWindow::on_btnRecovery_clicked()
    {
        QStringList list;
        list << "1" << "2" << "3";
        model->setStringList(list);
    }
    
    /**
     * @brief MainWindow::on_listView_clicked 选择之后,为状态栏赋值
     * @param index
     */
    void MainWindow::on_listView_clicked(const QModelIndex &index)
    {
        QString str  = QString("第 %1 行,第 %2 列").arg(index.row() + 1).arg(index.column() + 1);
        ui->statusbar->showMessage(str);
    }
    
    /**
     * @brief MainWindow::on_btnClearText_clicked 文本框清空
     */
    void MainWindow::on_btnClearText_clicked()
    {
        ui->plainTextEdit->clear();
    }
    
    /**
     * @brief MainWindow::on_btnShowModel_clicked 显示消息模型中的QStringList
     */
    void MainWindow::on_btnShowModel_clicked()
    {
        ui->plainTextEdit->clear();
        foreach (QString item, model->stringList()) {
            ui->plainTextEdit->appendPlainText(item);
        }
    }
    
    /**
     * @brief MainWindow::on_btnAdd_clicked 最后一行添加
     */
    void MainWindow::on_btnAdd_clicked()
    {
        model->insertRow(model->rowCount());
        QModelIndex index = model->index(model->rowCount() - 1, 0);
        model->setData(index, "new item", Qt::DisplayRole);
        ui->listView->setCurrentIndex(index);
        QString str  = QString("第 %1 行,第 %2 列").arg(index.row() + 1).arg(index.column() + 1);
        ui->statusbar->showMessage(str);
    }
    
    /**
     * @brief MainWindow::on_btnInsert_clicked 指定行插入
     */
    void MainWindow::on_btnInsert_clicked()
    {
        QModelIndex index = ui->listView->currentIndex();
        model->insertRow(index.row());
        model->setData(index, "new item", Qt::DisplayRole);
    }
    
    /**
     * @brief MainWindow::on_btnDel_clicked 删除一行
     */
    void MainWindow::on_btnDel_clicked()
    {
        QModelIndex index = ui->listView->currentIndex();
        model->removeRow(index.row());
    }
    
    /**
     * @brief MainWindow::on_btnClear_clicked 清空model
     */
    void MainWindow::on_btnClear_clicked()
    {
        model->removeRows(0, model->rowCount());
    }
    

    界面

  • 相关阅读:
    jenkins master-slave配置
    ansible-playbook 变量(vars)
    ansible-playbook && Roles && include
    ansible 循环与条件判断when
    python 微信爬虫实例
    JavaScript: 零基础轻松学闭包
    【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)
    【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(一)
    【大结局】《从案例中学习JavaScript》之酷炫音乐播放器(四)
    Java 实现批量重命名,亲测可用(精简版)
  • 原文地址:https://www.cnblogs.com/FlyonGrass/p/16166421.html
Copyright © 2020-2023  润新知