|
板凳
楼主 |
发表于 2021-1-25 16:55:13
|
只看该作者
添加右键菜单:
- #include "widget.h"
- #include "ui_widget.h"
- #include <QCursor>
- #include <QDebug>
- #include <QListView>
- #include <QStringList>
- #include <QStringListModel>
- #include <QPoint>
- #include <QMenu>
- #include <QListWidgetItem>
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- listview =new QListView(this);
- QStringList num;
- num<<"1"<<"2"<<"3"<<"4";
- QStringListModel *model=new QStringListModel(num);
- listview->setModel(model);
- listview->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(listview, SIGNAL(customContextMenuRequested(const QPoint&)),
- this, SLOT(show_contextmenu1(const QPoint&)));
- //删除测试
- //全部删除
- //model->removeRows(0,model->rowCount());
- //删除第几个,一共删除多少个
- //model->removeRows(0,3);
- }
- Widget::~Widget()
- {
- delete ui;
- }
- void Widget::show_contextmenu1(const QPoint& pos)
- {
- // if(cmenu)//保证同时只存在一个menu,及时释放内存
- // {
- // delete cmenu;
- // cmenu = NULL;
- // }
- qDebug()<<"show_contextmenu1";
- QMenu *cmenu = new QMenu(listview);
- QAction *ascendSortAction = cmenu->addAction("升序");
- QAction *descendSortAction = cmenu->addAction("降序");
- QAction *filterAction = cmenu->addAction("过滤");
- QAction *reshowAction = cmenu->addAction("重载");
- connect(ascendSortAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu1()));
- connect(descendSortAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu2()));
- connect(filterAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu3()));
- connect(reshowAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu4()));
- cmenu->exec(QCursor::pos());//在当前鼠标位置显示
- //cmenu->exec(pos)是在viewport显示
- }
- //点击空白错将不错出现菜单
- if(!((listview->selectionModel()->selectedIndexes()).empty()))
- {
- qDebug()<<"show_contextmenu1";
- QMenu *cmenu = new QMenu(listview);
- QAction *ascendSortAction = cmenu->addAction("升序");
- QAction *descendSortAction = cmenu->addAction("降序");
- QAction *filterAction = cmenu->addAction("过滤");
- QAction *reshowAction = cmenu->addAction("重载");
- connect(ascendSortAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu1()));
- connect(descendSortAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu2()));
- connect(filterAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu3()));
- connect(reshowAction, SIGNAL(triggered(bool)), this, SLOT(edit_menu4()));
- cmenu->exec(QCursor::pos());//在当前鼠标位置显示
- //cmenu->exec(pos)是在viewport显示
- //把选中的清楚
- listview->selectionModel()->clear();
- }
复制代码 |
|