| Home | ![]() |
This tiny editor uses a pie menu on a QTextEdit. It supports some common operations such as undo, redo, cut, copy and paste.

editor.h:
#ifndef EDITOR_H
#define EDITOR_H
#include <qtextedit.h>
#include <qevent.h>
class QtPieMenu;
class Editor : public QTextEdit
{
Q_OBJECT
public:
Editor(QWidget *parent = 0, const char *name = 0);
QSize sizeHint() const;
protected slots:
void setUndoAvailable(bool);
void setRedoAvailable(bool);
void setCopyAvailable(bool);
void setPasteAvailable(void);
protected:
void contentsContextMenuEvent(QContextMenuEvent *e);
private:
QtPieMenu *p;
QtPieMenu *markMenu;
};
#endif
editor.cpp
#include <qapplication.h>
#include <qclipboard.h>
#include "editor.h"
#include <qtpiemenu.h>
Editor::Editor(QWidget *parent, const char *name)
: QTextEdit(parent, name)
{
p = new QtPieMenu("Root menu", this, "Root menu", 10, 50);
markMenu = new QtPieMenu("Edit", p, "Edit menu", 10, 50);
markMenu->insertItem("All", this, SLOT(selectAll()));
markMenu->insertItem("Cut", this, SLOT(cut()));
markMenu->insertItem("Del", this, SLOT(del()));
markMenu->insertItem("Copy", this, SLOT(copy()));
markMenu->setItemWeight(2, 0);
markMenu->setItemWeight(2, 2);
p->insertItem(markMenu);
p->insertItem("<i>Undo</i>", this, SLOT(undo()));
p->insertItem("Paste", this, SLOT(paste()));
p->insertItem("<i>Redo</i>", this, SLOT(redo()));
connect(this, SIGNAL(undoAvailable(bool)), SLOT(setUndoAvailable(bool)));
connect(this, SIGNAL(redoAvailable(bool)), SLOT(setRedoAvailable(bool)));
connect(this, SIGNAL(copyAvailable(bool)), SLOT(setCopyAvailable(bool)));
connect(QApplication::clipboard(), SIGNAL(dataChanged()), SLOT(setPasteAvailable()));
setUndoAvailable(false);
setRedoAvailable(false);
setCopyAvailable(false);
setText(tr("Mark some text and activate the context menu!"));
}
QSize Editor::sizeHint() const
{
return QSize(200, 150);
}
void Editor::contentsContextMenuEvent(QContextMenuEvent *e)
{
p->popup(e->globalPos());
}
void Editor::setUndoAvailable(bool enabled)
{
p->setItemEnabled(enabled, 1);
}
void Editor::setRedoAvailable(bool enabled)
{
p->setItemEnabled(enabled, 3);
}
void Editor::setCopyAvailable(bool enabled)
{
markMenu->setItemEnabled(enabled, 1);
markMenu->setItemEnabled(enabled, 2);
markMenu->setItemEnabled(enabled, 3);
}
void Editor::setPasteAvailable()
{
bool enabled = QApplication::clipboard()->text(QClipboard::Clipboard);
p->setItemEnabled(enabled, 2);
}
main.cpp:
#include <qapplication.h>
#include "editor.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Editor window(0, "Editor");
app.setMainWidget(&window);
window.show();
return app.exec();
}
editor.pro:
TEMPLATE = app INCLUDEPATH += . include(../../src/qtpiemenu.pri) HEADERS += editor.h SOURCES += editor.cpp main.cpp
| Copyright © 2003-2006 Trolltech | Trademarks | Qt Solutions
|