1.求子集,2.动态创建action
阅读原文时间:2023年07月10日阅读:2

功能待完善

#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H

#include
#include
#include
#include
#include

#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

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(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

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyMainWindow w;
w.show();

return a.exec();  

}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章