上次在这里问了如何在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实现一模一样的功能,已经实现了。所以应该是右键这里的问题。