你上面程序里的lineEdit_2是不是就是文本编辑器的对象名?
还是不能实现。帮我看看程序吧,版老大
头文件QTextEditEx.h
---------------------------------------------------------------
#ifndef QTEXTEDITEX_H
#define QTEXTEDITEX_H
#include <QTextEdit>
class QMenu;
class QAction;
class QTextEditEx : public QTextEdit
{
Q_OBJECT
public:
QTextEditEx(QWidget * parent = 0);
~QTextEditEx();
private slots:
void customContextMenuRequestedSlot(const QPoint &pos);
private:
QMenu *menu;
QAction *clrAll;
};
#endif
---------------------------------------------------------------
cpp文件QTextEditEx.cpp
---------------------------------------------------------------
#include "QTextEditEx.h"
#include <QMenu>
#include <QAction>
QTextEditEx::QTextEditEx(QWidget * parent)
: QTextEdit(parent)
{
menu = 0;
clrAll = new QAction("&Clear All", this);
connect(this, SIGNAL(customContextMenuRequested()), this, SLOT(customContextMenuRequestedSlot));
}
void QTextEditEx::customContextMenuRequestedSlot(const QPoint &pos)
{
menu = createStandardContextMenu();
menu->addAction(clrAll);
menu->popup(this->mapToGlobal(pos));
}
QTextEditEx::~QTextEditEx()
{
if(menu != 0)
{
delete menu;
menu = 0;
}
if(clrAll != 0)
{
delete clrAll;
clrAll = 0;
}
}
--------------------------------------------------------------
现在的问题是context menu根本就没弹出来。将contextMenuPolicy设置成ActionsContextMenu和Qt::CustomContextMenu都不行。