#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QMenuBar>
#include <QMenu>
#include <QTextEdit>
#include <QtGui>
#include <QObject>

class Fenster : public QMainWindow
{   
    Q_OBJECT     
    public:
      Fenster();   // Konstruktor
    protected:
      void contextMenuEvent(QContextMenuEvent *event);      
    public:
      QAction *cutAct;
      QAction *copyAct;
      QAction *pasteAct;  
      QAction *Speichern;
      QAction *Laden;      
      QMenu *fileMenu;     
      
      QPushButton *quit;
      QString *Statusleistenstring;  
    private slots:
      void test();
        
};

int main(int argc, char *argv[]) 
{
    QApplication    app(argc, argv);    
    Fenster fenster;                            //neues Fenster
   
    QPushButton markieren("Alles Markieren",&fenster);    

    QTextEdit edit("text",&fenster);


    edit.setReadOnly(0);                           //Textfeld kann gelesen werden
    edit.move(0,20);
    edit.resize(790,300);
    edit.setFocus();
       
    markieren.resize(100,20);
    markieren.move(110,560);
    markieren.setFont(QFont("Arial", 8, QFont::Bold));
    
    QObject::connect(&markieren, SIGNAL(clicked()), &edit, SLOT(akt()));

         
    fenster.show();
    
    return app.exec();
}

Fenster::Fenster()
{
    QPushButton *quit = new QPushButton(tr("quit"), this);
    quit->setGeometry(10, 560, 100, 20);
    quit->setFont(QFont("Arial", 12, QFont::Bold));
    QObject::connect(quit, SIGNAL(clicked()),qApp, SLOT(quit()));
    
    setWindowTitle(tr("Hauptfenster"));     //titel des Fensters
   // setFixedSize(800,600);            //Feste Größe des Fensters
    setMinimumSize(160, 160);           //Minimale Fenstergröße
    setMaximumSize(800, 600);           //Maximale Fenstergröße
    resize(800,600);                    //Fenstergröße bei der inizialisierung
    
    Statusleistenstring=new QString;
    *Statusleistenstring= tr("Das ist eine Statusleiste");
    statusBar()->showMessage(*Statusleistenstring);      //ansprechen einer Statusbar
    
    
    Speichern = new QAction(tr("&Speichern"), this);
    Speichern->setShortcut(tr("Ctrl+s"));                  //setzt einen Short cut
    Speichern->setStatusTip(tr("Speichern der Daten"));    //gibt diese Information in der Statusleiste aus
    QObject::connect(Speichern, SIGNAL(triggered()),this, SLOT(test())); 
    
    Laden = new QAction(tr("&Laden"), this);
    Laden->setShortcut(tr("Ctrl+l"));                  //setzt einen Short cut
    Laden->setStatusTip(tr("Laden der Daten"));    //gibt diese Information in der Statusleiste aus
    
    
    fileMenu = menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(Speichern);
    fileMenu->addAction(Laden);
   
}

void Fenster::test()
{
   QMessageBox::about(this, tr("Box"),"Message Box");
}

void Fenster::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu menu(this);
    menu.addAction(Speichern);
    menu.addAction(Laden);
    menu.exec(event->globalPos());  //für Rechte Maustaste
}
