(二)使用预定义模型 QStringListModel例子
使用预定义模型 QStringListModel例子
源代码如下
Main.cpp
#include <QApplication> #include "teamleadersdialog.h" int main(int argc, char *argv[])
{
QApplication app(argc, argv); //字符串数组
QStringList leaders;
leaders << "Stooge Viller" << "Littleface" << "B-B Eyes"
<< "Pruneface" << "Mrs. Pruneface" << "The Brow"
<< "Vitamin Flintheart" << "Flattop Sr." << "Shakey"
<< "Breathless Mahoney" << "Mumbles" << "Shoulders"
<< "Sketch Paree"; //对话框
TeamLeadersDialog dialog(leaders);
dialog.show(); return app.exec();
}
teamleadersdialog.h
#ifndef TEAMLEADERSDIALOG_H
#define TEAMLEADERSDIALOG_H #include <QDialog> class QDialogButtonBox;
class QListView;
class QStringListModel; class TeamLeadersDialog : public QDialog
{
Q_OBJECT public:
//构造函数
TeamLeadersDialog(const QStringList &leaders, QWidget *parent = ); QStringList leaders() const; private slots:
void insert();
void del(); private:
QListView *listView;
QDialogButtonBox *buttonBox;
QStringListModel *model;
}; #endif
teamleadersdialog.cpp
#include <QtGui> #include "teamleadersdialog.h" TeamLeadersDialog::TeamLeadersDialog(const QStringList &leaders,
QWidget *parent)
: QDialog(parent)
{
//创建并组装一个QStringListModel
model = new QStringListModel(this);
model->setStringList(leaders); //创建一个QListView
listView = new QListView;
//设置模型
listView->setModel(model);
//设置QListView编辑触发器:通过开始输入或者双击进入编辑字符串的状态
listView->setEditTriggers(QAbstractItemView::AnyKeyPressed
| QAbstractItemView::DoubleClicked);
//
buttonBox = new QDialogButtonBox();
QPushButton *insertButton = buttonBox->addButton(tr("&Insert"),
QDialogButtonBox::ActionRole);
QPushButton *deleteButton = buttonBox->addButton(tr("&Delete"),
QDialogButtonBox::ActionRole);
buttonBox->addButton(QDialogButtonBox::Ok);
buttonBox->addButton(QDialogButtonBox::Cancel);
//信号槽绑定插入、删除按钮
connect(insertButton, SIGNAL(clicked()), this, SLOT(insert()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(del()));
//按钮盒的ok和Cancel事件
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); //界面竖直布局listView和buttonBox
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(listView);
mainLayout->addWidget(buttonBox);
//设置当前窗口的布局为mainLayout
setLayout(mainLayout); setWindowTitle(tr("Team Leaders"));
}
//获取当前模型中的内容
QStringList TeamLeadersDialog::leaders() const
{
return model->stringList();
} void TeamLeadersDialog::insert()
{
//从列表视图得到当前项的行数
int row = listView->currentIndex().row();
//在模型中插入一个新行,并且模型会自动更新列表视图
model->insertRows(row, );
//获取当前行在模型中的"模型索引"
QModelIndex index = model->index(row);
//设置刚刚插入的空白行为列表视图的当前索引
listView->setCurrentIndex(index);
//设置列表视图在当前行进入编辑状态
listView->edit(index);
} void TeamLeadersDialog::del()
{
//从目前行开始,共删除1行model数据,并自动更新列表视图
model->removeRows(listView->currentIndex().row(), );
}
转自:http://qimo601.iteye.com/blog/1534322
(二)使用预定义模型 QStringListModel例子的更多相关文章
- (三)使用预定义模型QDirModel的例子
使用预定义模型QDirModel的例子 Main.cpp #include <QApplication> #include "directoryviewer.h" in ...
- TVM部署预定义模型
TVM部署预定义模型 本文通过深度学习框架量化的模型加载到TVM中.预量化的模型导入是在TVM中提供的量化支持之一. 本文演示如何加载和运行由PyTorch,MXNet和TFLite量化的模型.加载后 ...
- Shell脚本_位置参数和预定义参数
一.位置参数变量 1.输出两个输入参数之和 l1.sh 1 2 3 4 5 6 7 8 9 #!/bin/bash num1=$1 num2=$2 sum=$((num1+num2)) # ...
- C#预定义类型、引用类型
一.预定义的值类型 一个字节(1Byte)=8位(8Bit) BitArarry类可以管理位Bit. 1.整型 所有的整形变量都能用十进制或十六进制表示:long a=0x12AB 对一个整形值如未指 ...
- javascript 函数初探 (二)--- 那些年的预定义函数
javascript的预定义函数: javascript引擎中有一组可以随时调用的内建函数. 这些内建函数包括: 1. parseInt() 2. parseFloat() 3. isNaN() 4. ...
- 【二十三】php之预定义超全局变量
php提供了九种预定义超全局变量: $_GET.$_POST.$_REQUEST.$_SERVER.$_ENV.$_FILE. $_COOKIE.$_SESSION. $GLOBALS 1.$_GET ...
- Java8学习笔记(二)--三个预定义函数接口
三个函数接口概述 JDK预定义了很多函数接口以避免用户重复定义.最典型的是Function: @FunctionalInterface public interface Function<T, ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
- C++ 中常见预定义宏的使用
http://blog.csdn.net/hgl868/article/details/7058906 替代字符串: #define DOWNLOAD_IMAGE_LOG /var/log/png.l ...
随机推荐
- C#开发Windows Services服务--服务安装失败的解决办法
问题1:“System.Security.SecurityException:未找到源,但未能搜索某些或全部事件日志.不可访问的日志: Security.” 正在运行事务处理安装. 正在开始安装的“安 ...
- PO_职位职务审批模式详解(设定)
2014-06-03 Created By BaoXinjian
- cocos2dx 3.1从零学习(四)——内存管理(错误案例分析)
本篇内容文字比較较多,可是这些都是建立在前面三章写代码特别是传值的时候崩溃的基础上的.可能表达的跟正确的机制有出入,还请指正. 假设有不理解的能够联系我.大家能够讨论一下,共同学习. 首先明白一个事实 ...
- php 解析xml
解析xml,返回一个对象. $obj = simplexml_load_string($XML, 'SimpleXMLElement', LIBXML_NOCDATA); 查看结果var_dump($ ...
- mysql-5.7 调整mysql的复制方式由master_log_file+master_log_pos 到gtid 详解
一.祖传的master_log_file + master_log_pos的复制方式面临的问题: 在很久以前 那个时候我还没有出道,mysql就已经就有复制这个功能了.如果要告诉slave库从mast ...
- unity, 最简单的additive shader
Shader "Custom/myAdditive" { Properties { _MainTex ("Albedo (RGB)&q ...
- VS2012/13中即将增加InstallShield升级版
对于Visual Studio 2012去掉了前作中的安装程序(Installer)项目模板,许多开发者都感到非常失望.这个流行的项目类型为开发者们提供了若干选项:除了InstallShield LE ...
- Maven Docker镜像使用技巧
摘要: Maven是目前最流行的Java项目管理工具之一,提供了强大的包依赖管理和应用构建功能.本文以Maven为例介绍了Docker在应用构建中的一些常见技巧. Maven是目前最流行的Java项目 ...
- Spring cloud子项目
目前来说spring主要集中于spring boot(用于开发微服务)和spring cloud相关框架的开发,我们从几张图着手理解,然后再具体介绍: spring cloud子项目包括: Sprin ...
- Codeforces Round #262 (Div. 2) C
题目: C. Present time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...