PURPOSE:使用QT软件写GUI时需要自定义右键菜单内容
写在前面的话:在写交互界面的时候,需要给文本框(QTextEdit)或者表格框(QTableEdit)自定义右键下拉菜单的一些功能。QT本身给这些菜单自定义了指定功能(undo, paste, cancel, selectall, etc),想修改的时候搜了一大堆东西,然而发现都没有什么用,最后综合了一些blog定义Menu的方法终于改好了
涉及到的class:
- QTextEdit
- QTableWidget
- QMenu
- QPoint
- QAction
- QCursor
此处只给出QTextEdit部分代码,别的可以类似写出
头文件myText.h略,以下是myText.cpp:
myText::myText(QWidget *parent /*= 0*/) : QWidget(parent)
{
showText = new QTextEdit();
showText->setContextMenuPolicy(Qt::CustomContextMenu);
connect(showText, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slot_textmenu(QPoint)));
}
//自定义下拉菜单
void myText::slot_textmenu(QPoint){
QMenu *menu = new QMenu;
//自定义action
QAction *action = new QAction("添加到文本",showText);
connect(action, SIGNAL(triggered(bool)), this, SLOT(addtext()));
//添加action到menu
menu->addAction(action);
menu->move (cursor().pos());
menu->show();
}
//action“添加到文本”对应操作
void myText::addText()
{
}