上次在这里问了如何在tablewidget显示右键菜单的问题,现在已经显示出来了,但如何响应成了问题。
custom_tablewidget_site.h文件:
//这个就是新建的一个继承类,用法就是上次大家在这里教我的在UI界面下点我要显示右键的那个tablewidget再点提升把这个加进去。
#include <QTableWidget>
#include <QMenu>
class Custom_TableWidget_Site : public QTableWidget
{
Q_OBJECT
public:
explicit Custom_TableWidget_Site(QWidget *parent = 0);
QAction *del;
QAction *upload;
QAction *download;
QAction *newfile;
QAction *newfolder;
QAction *refresh;
private:
void contextMenuEvent(QContextMenuEvent *);
};
custom_tablewidget_site.cpp文件:
#include "custom_tablewidget_site.h"
Custom_TableWidget_Site::Custom_TableWidget_Site(QWidget *parent) :
QTableWidget(parent)
{
}
void Custom_TableWidget_Site::contextMenuEvent(QContextMenuEvent *)
{
QCursor cur = this->cursor();
QMenu *menu = new QMenu(this);
del = new QAction(QObject::trUtf8("删除"),this);
upload = new QAction(QObject::trUtf8("上传"),this);
download = new QAction(QObject::trUtf8("下载"),this);
newfile = new QAction(QObject::trUtf8("新建文件"),this);
newfolder = new QAction(QObject::trUtf8("新建文件夹"),this);
refresh = new QAction(QObject::trUtf8("刷新"),this);
menu->addAction(del);
menu->addAction(upload);
menu->addAction(download);
menu->addAction(newfile);
menu->addAction(newfolder);
menu->addAction(refresh);
menu->exec(cur.pos());
}
最后我添加signal和slot响应的方式为:
mainwindow.cpp:
QObject::connect(ui->mytablewidget->newfile,SIGNAL(clicked()),this,SLOT(site_btn_newfile_slot()));
功能的意思是,如果点击鼠标右键,弹出的菜单里,点“新建文件”,那么mytablewidget里就会多出一行,但实际运行起来的时候一运行程序就不可预期的退出了。
可以排除其他问题,我另外有定义一个自定义的按钮控件,点击以后也是连到site_btn_newfile_slot()这个slot实现一模一样的功能,已经实现了。所以应该是右键这里的问题。