Hallo,
ich bin noch blutiger Anfänger in Qt und habe einige Fragen.
Wäre toll, wenn mir jemand weiterhelfen könnte.
Einmal:
Welche Schritte muss man machen, um einen neuen Menüeintrag in einem QT Programm zu erstellen?
Und:
Wie mache ich es, dass ein Qt Programm sein Fenster neu zeichnet, wenn sich der Datenbestand geändert hat?
Danke schonmal!
Das zwuckelchen
Noob - Fragen
Hi,
Also ich mach das mit dem Menu immer so (s.u.), is eigentlich recht selbsterklaerend. Ich denke QMainWindow's zu benutzen ist da der gaengige Weg. Afaik braucht man sich bei den QWidgets nicht um Garbage Collection zu kuemmern, daher kein Dtor, bin aber selber auch erst am lernen.
Fenster neuzeichnen? Ich denke es kommt drauf an, was Du da eig genau machen willst. Um nen Text von nem Widget zu aendern is das nich notwendig, vieles laeuft bspw. mit QWidget::hide(), QWidget::setVisible(bool) oder zB auch mit QStackedLayout. Kommt halt drauf an, welches Layoutproblem Du nun konkret hast.
Also ich mach das mit dem Menu immer so (s.u.), is eigentlich recht selbsterklaerend. Ich denke QMainWindow's zu benutzen ist da der gaengige Weg. Afaik braucht man sich bei den QWidgets nicht um Garbage Collection zu kuemmern, daher kein Dtor, bin aber selber auch erst am lernen.
Fenster neuzeichnen? Ich denke es kommt drauf an, was Du da eig genau machen willst. Um nen Text von nem Widget zu aendern is das nich notwendig, vieles laeuft bspw. mit QWidget::hide(), QWidget::setVisible(bool) oder zB auch mit QStackedLayout. Kommt halt drauf an, welches Layoutproblem Du nun konkret hast.
Code: Alles auswählen
// XYZ.hpp
class QAction;
class QMenu;
class QMainWindow;
// ...
class XYZ : public QMainWindow
{
// ...
private slots:
void slotLoad();
void slotSave();
void slotCopy();
void slotPaste();
// ...
private:
// menus
QMenu *menuFile;
QMenu *menuEdit;
// actions
QAction *actLoad;
QAction *actSave;
QAction *actCopy;
QAction *actPaste;
// functions
void initGUI();
void createActions();
void createMenus();
// ...
public:
XYZ();
};
// XYZ.cpp
#include <QtGui>
#include "XYZ.hpp"
// ...
XYZ::XYZ()
{
initGUI();
};
void XYZ::initGUI()
{
// ...
createActions();
createMenus();
// ...
};
void XYZ::createActions()
{
actLoad = new QAction(tr("&Laden"));
actLoad->setIcon(QIcon(":/img/laden.png")); // fuer Icons
actLoad->setShortcut(tr("Ctrl+L")); // short cut
connect(actLoad, SIGNAL(triggered()), this, SLOT(slotLoad()));
actSave = new QAction(tr("&Speichern"));
connect(actSave, SIGNAL(triggered()), this, SLOT(slotSave()));
actCopy = new QAction(tr("Kopieren"));
connect(actCopy, SIGNAL(triggered()), this, SLOT(slotCopy()));
actPaste = new QAction(tr("Einfuegen"));
connect(actPaste, SINGAL(triggered()), this, SLOT(slotPaste()));
};
void XYZ::createMenus()
{
menuFile = menuBar()->addMenu(tr("&Datei"));
menuFile->addAction(actLoad);
menuFile->addSeparator();
menuFile->addAction(actSave);
menuEdit = menuBar()->addMenu(tr("&Bearbeiten"));
menuEdit->addAction(actCopy);
menuEdit->addAction(actPaste);
};
void XYZ::slotLoad()
{
// ...
};
void XYZ::slotSave()
{
// ...
};
void XYZ::slotCopy()
{
// ...
};
void XYZ::slotPaste()
{
// ...
};
Die Doku von Qt ist hervorragend. Also, wenn du sie nicht verständlich findest, dann fehlen dir eventuell C++ Kentnisse. Diese sind Voraussetzung, um mit Qt etwas erreichen zu können...zwuckel hat geschrieben:Ich werde mich noch mal der Dokumentation widmen (obwohl ich die für Anfänger nicht sehr verständlich finde. ABer das mag an mir liegen)
-
Burgpflanze
- Beiträge: 89
- Registriert: 24. Februar 2006 16:41
- Wohnort: Dresden