功能待完善
#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
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();
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章