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();
}

最新文章

  1. Android RadioGroup和RadioButton详解
  2. 在Eclipse中,如何把一个java项目变成web项目
  3. VisualStudio2010正则表达式查找和替换
  4. 判断 JS 中对象的类型
  5. iOS开发 画六边形(多边形)
  6. 在Android中动画移动一个View的位置,采用Scroller类实现Android动画之 View移动
  7. KM3
  8. mapping 详解3(Meta-Fields)
  9. 学习日记_SSH框架web.xml配置文件篇
  10. 【2013杭州区域赛】部分题解 hdu4770—4780
  11. Windows - 程序猿应该熟记的CMD常用命令
  12. jquery实现调用webservice
  13. progressBar的使用
  14. MarkDown语言
  15. rediscluster安装
  16. java8的版本对组合式异步编程
  17. @JsonIgnore注解可以实现不返回前端字段
  18. 使用.gitignore删除Github上的.idea文件
  19. 微信小程序——动态渲染页面、路径传参
  20. [图解tensorflow源码] 线程池模块分析 (CPU thread pool device)

热门文章

  1. The Best Hacking Tools
  2. python中静态方法、类方法、属性方法区别
  3. Springboot 1.5.x版本上读取自定义配置文件问题
  4. E QUERY [main] SyntaxError: identifier starts immediately after numeric literal mongodb mapReduce 异常分析 集合命名规范
  5. JS续
  6. br_netfilter 模块开机自动方法
  7. Java - 在控制台中执行一个可执行jar
  8. classmethod和staticmethod区别
  9. 谷歌机器学习速成课程---3降低损失 (Reducing Loss):梯度下降法
  10. UIPageControl修改圆点大小,根据View大小自适应