功能待完善

#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. 二、多线程基础-乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁

    1.10乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁1)乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将 比较-设置 ...

  2. FPGA流程设计

    做fpga也有四年时间了,该有个总结.刚开始那会,学习东西都是死记硬背,去面试也是直接带着答案去了. 时间久了,才懂得设计一些基本思路. 1. 设计输入: verilog代码和原理图.画原理图都是懒得 ...

  3. Python入门知识总结【新手必学】

    Python 基础学习输入和输出list 和 tuple条件判断循环dict 和 set感觉python这门语言用途较广,先熟悉下其语法.PS:另外很多人在学习Python的过程中,往往因为没有好的教 ...

  4. vue中使用矢量图

    1.打开矢量图库,将需要的图表添加至购物车 2.将购物车的图标添加到一个项目中(便于后期增加更新)并下载至本地 3.将这四个文件及iconfont.css添加至项目的assets中 4.打开iconf ...

  5. 08 SSM整合案例(企业权限管理系统):07.订单操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 07.订单操作 SSM订单操作 ...

  6. Ternsorflow 学习:001-通过例程,初步了解Tensorflow

    前言 本章的目的是了解和运行 TensorFlow,在开始之前,让我们先看一段使用 Python API 撰写的 TensorFlow 示例代码,让你对将要学习的内容有初步的印象. 下面这段短小的 P ...

  7. GNS3 模拟DHCP之地址请求

    R1: conf t int f0/0 no shutdown ip address dhcp end R2: conf t int f0/0 no shutdown ip add 12.1.1.2 ...

  8. anaconda 创建虚拟环境(自己版本)

    首先安装anaconda(3) Anacond的介绍Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 因为包含了大量的科学包,Ana ...

  9. 未知进程问题,process information unavailable

    执行jps,有些未知进程: 2690 -- process information unavailable2666 原因:内存不足. cd /tmp/hsperfdata_impala/ 执行ll后, ...

  10. Linux的几种关机命令

    在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各 ...