功能待完善

#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H #include <QMainWindow>
#include <QTableView>
#include <QStandardItemModel>
#include <QItemSelectionModel>
#include <QMenu> #define FixedColumnCount 8 class MyMainWindow : public QMainWindow
{
Q_OBJECT private:
QTableView *_tableView;
QStandardItemModel *_standardItemModel;
QItemSelectionModel *_itemSelectionModel;
QMenu *_menu; public:
MyMainWindow(QWidget *parent = nullptr);
~MyMainWindow();
bool eventFilter(QObject* obj, QEvent *event);
void createActions(const QStringList &textList);
void subset(); public slots:
void setTextSlot(); }; #endif // MYMAINWINDOW_H
#include "mymainwindow.h"
#include <QEvent> MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent)
{
// 界面
_tableView = new QTableView();
setCentralWidget(_tableView);
resize(, ); // model/view
_standardItemModel = new QStandardItemModel(, FixedColumnCount, this);
_itemSelectionModel = new QItemSelectionModel(_standardItemModel); _tableView->setModel(_standardItemModel);
_tableView->setSelectionModel(_itemSelectionModel);
_tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
_tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
_tableView->installEventFilter(this); _menu = new QMenu(this);
} MyMainWindow::~MyMainWindow()
{ } bool MyMainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(obj == _tableView && event->type() == QEvent::ContextMenu)
{
if(_tableView->currentIndex().isValid()==true)
{
_menu->exec(cursor().pos());
}
} return QWidget::eventFilter(obj, event);
} // 在tableview上动态创建actions
void MyMainWindow::createActions(const QStringList &textList)
{
for(int i = ; i < textList.size(); i++)
{
QString text = textList.at(i);
_menu->addAction(text, this, SLOT(setTextSlot()));
}
} void MyMainWindow::setTextSlot()
{
// 获取action
QAction *action = static_cast<QAction *>(sender());
QString text = action->text(); // 获取选中item,通过以下方式,或者通过QAbstractItemview的selectedIndexes方法
QModelIndexList indexList = _itemSelectionModel->selectedIndexes(); // 设置model
for(int i = ; i < indexList.size(); i++)
{
QModelIndex index = indexList.at(i);
_standardItemModel->setData(index, text);
}
} // 求多个字符串序列的子集
void MyMainWindow::subset()
{ }
#include "mymainwindow.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyMainWindow w;
w.show(); return a.exec();
}

1.求子集,2.动态创建action的更多相关文章

  1. jQuery 绑定事件到动态创建的元素上

    在进入主题之前,我们先来看一个前台页面经常用到的功能:点击页面输入框时自动选择其中文本. 很容易想到利用输入框的focus事件,当输入框获得焦点时,再调用jQuery的select()方法. Okay ...

  2. Android实现多页左右滑动效果,支持子view动态创建和cache

    要实现多页滑动效果,主要是需要处理onTouchEvent和onInterceptTouchEvent,要处理好touch事件的子控件和父控件的传递问题. 滚动控制可以利用android的Scroll ...

  3. 使用dxNavBar动态创建应用程序菜单

    一.如何动态创建dxNavBar内容: function TMain.GetAcitonByCaption(const aCategory,aCaption: string): Integer; va ...

  4. BroadcastReceiver接收电量变化的广播-------在代码中动态创建接受者

    本例为动态创建广播接收者即不是在AndroidManifest.xml文件中定义的广播接收着 代码: package com.qf.broadcastreceiver01; import androi ...

  5. js动态创建Form表单并提交

    javascript动态创建Form表单和表单项,然后提交表单请求,最后删除表单,代码片段如下(Firefox测试通过): var dlform = document.createElement('f ...

  6. js动态创建和删除option

    1.动态创建select function createSelect(){           var mySelect = document.createElement("select&q ...

  7. 动态创建selectjs 操作select和option

    1.动态创建select function createSelect(){ var mySelect = document.createElement("select"); myS ...

  8. jQuery动态创建form表单并提交到后台(携带一定的数据进行页面跳转)

    今天遇到这么一个需求,携带一个编号一个名字跳转到另一个JSP页面,直接页面跳转(get携带数据)的话不太安全,于是想到到后台转发一下. 第一种:直接以表单提交方式的进行 JS代码: var form ...

  9. ArcGIS api for javascript——动态创建图层列表

    描述 本例循环地图服务里的所有图层并增加每个图层到一个带checkbox的列表,checkbox能设置图层的显示或隐藏.动态创建列表的优势是所有的图层都会包含在列表中,即使服务器管理员删除或增加了图层 ...

随机推荐

  1. Vue 集成easyUI

    原 Vue 集成easyUI https://blog.csdn.net/m0_37948170/article/details/84960320   参考vue官网用cli创建了Vue项目之后: n ...

  2. 五、ibatis中#和$的区别和使用

    1.#和$两者含义不同#:会进行预编译,而且进行类型匹配:$:不进行数据类型匹配.示例:变量name的类型是string, 值是"张三"    $name$ = 张三    #na ...

  3. Python基础_ONLINE习题集_03 数据类型

    3.1 将元组(1,2,3) 和集合{"four",5,6}合成一个列表 tuple,set,list = (1,2,3),{"four",5,6},[] fo ...

  4. DataReader和DataAdapter的区别

    SqlDataReader是一个向前的指针,本身并不包含数据,调用一次Read()方法它就向前到下一条记录,一个SqlDataReader必须单独占用一个打开的数据库连接. 在使用 SqlDataRe ...

  5. 用python写测试数据文件

    f是指向文件的指针,r是转义字符,可以让字符串中的\保持不被转义.路径点属性查然后加上当前文件. 'w'表示只写,‘r’表示只读. import random 导入random数 s = []开一个空 ...

  6. NO27 定时任务

    linux定时任务的设置   为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/a ...

  7. arm linux 移植 PHP

    背景: PHP 是世界上最好的语言. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 php :7.1.30 zlib :1.2.11 libxml ...

  8. ubi问题总结

    一.挂载成功后,使用正常.有时会出现:UBIFS error (pid 76): ubifs_read_node: bad node type (255 but expected 1)UBIFS er ...

  9. 使用命令行连接远程DB2数据库

    1. 打开命令窗口 win + r  输入 db2cmd 2. 首先在客户机上对远程节点进行编目 CATALOG  TCPIP                    //编目一个TCP/IP节点NOD ...

  10. 006、Java中定义中文变量中文标识符

    01.代码如下 package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...