这样不行啊,版老大
你看我的做法是对的吗?
1.就是像你说的,把文本编辑器控件提升为类QTextEditEx,然后实现QTextEditEx.h和QTextEditEx.cpp
----------------------------------------------------------------------------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();
virtual void contextMenuEvent(QContextMenuEvent * event);
private slots:
void clearAll(void);
private:
QMenu *menu;
QAction *clrAll;
};
#endif
----------------------------------------------------------------------------QTextEditEx.h
----------------------------------------------------------------------------QTextEditEx.cpp
#include "QTextEditEx.h"
#include <QMenu>
#include <QAction>
#include <QContextMenuEvent>
QTextEditEx::QTextEditEx(QWidget * parent)
: QTextEdit(parent)
{
menu = 0;
clrAll = new QAction("&Clear All", this);
connect(clrAll, SIGNAL(triggered()), this, SLOT(clearAll()));
}
void QTextEditEx::contextMenuEvent(QContextMenuEvent * event)
{
QMenu *menu = createStandardContextMenu();
menu->addAction(clrAll);
menu->exec(event->globalPos());
//delete menu;
}
void QTextEditEx::clearAll()
{
clear();
}
QTextEditEx::~QTextEditEx()
{
if(menu != 0)
{
delete menu;
menu = 0;
}
if(clrAll != 0)
{
delete clrAll;
clrAll = 0;
}
}
----------------------------------------------------------------------------QTextEditEx.cpp
2.设置文本编辑器控件对象名为textEditor并设置属性ContextMenuPolicy为Qt::ActionsContextMenu
3.在程序中直接用textEditor,我没有包含头文件QTextEditEx.h。(好像包含了也不行)
我想给文本编辑器增加“右键->Clear All->清除全部”的功能。我这样的做法哪儿错了呢?
谢谢啊!