功能待完善

#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. 【转帖】IBM发布全新闪存解决方案,助企业存储架构做减法

    IBM发布全新闪存解决方案,助企业存储架构做减法 http://stor-age.zhiding.cn/stor-age/2020/0227/3124851.shtml 感觉 配图弄错了 FlashS ...

  2. Linux centosVMware 磁盘格式化、磁盘挂载、手动增加swap空间

    一.磁盘格式化 磁盘分区后不能直接使用,需要对每一个分区格式化,格式化其实就是安装系统文件. 命令mke2fs:不支持格式化成xfs系统文件  mkfs.ext4 == mke2fs -t ext4 ...

  3. 使用redis集群中遇到的错误

    一. 上述错误的原因: 1.在redis服务器上关闭防火墙 2.可能是host写错了 上述错误的原因: 配置文件中jedisClient代表的是单机版的redis,但是在类中转化的时候转化的是集群版

  4. 如何知道某个ACTIVITY是否在前台?

    本文链接:http://zengrong.net/post/1680.htm 有一个Android应用包含包含一个后台程序,该程序会定期连接服务器来实现自定义信息的推送.但是,当这个应用处于前台的时候 ...

  5. computed、methods、watch

    computed:计算属性将被混入到 Vue 实例中.所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例. methods:methods 将被混入到 Vue 实例中 ...

  6. 修改Git的name和email

    对于git的user.name 与user.email来说,有三个地方可以设置 etc/gitconfig (几乎不常用) git config --system ~/.gitconfig(对于单个用 ...

  7. Jquery事件汇总、网页入口

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 吴裕雄--天生自然JAVA数据库编程:使用元数据分析数据库

    import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import j ...

  9. MAC 终端编辑完成后如何保存:

    如果是vi,则:Esc 退出编辑模式,输入以下命令: :wq 保存后退出vi,若为 :wq! 则为强制储存后退出(常用):w 保存但不退出(常用):w! 若文件属性为『只读』时,强制写入该档案:q 离 ...

  10. python集成开发环境Anaconda的安装

    参考博文: anaconda在Linux下的安装 Linux下anaconda3的安装 Anaconda的安装.启用及停用的步骤 Python学习之Anaconda的使用及配置方法 Anaconda ...