Seite 1 von 1

Noob - Fragen

Verfasst: 1. Juli 2007 21:07
von zwuckel
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

Verfasst: 1. Juli 2007 21:29
von Volker
Glaubst Du ernsthaft auf so ne Frage bekommst Du hier ne besser Antwort als in der Dokumentation von QT?

Is nicht böse gemeint, aber evtl. solltest Du erstmal dort anfangen.

Verfasst: 1. Juli 2007 22:08
von Fabeltier
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.

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()
{
// ...
};

Verfasst: 1. Juli 2007 22:10
von upsala
@zwuckel: Schau dir mal in Ruhe die Beispiele in der Dokumentation durch und wenn du dann noch Fragen hast, dann frag nochmal...

Verfasst: 2. Juli 2007 16:15
von zwuckel
Vielen Dank für die Antworten!
Besonderes Danke an Fabeltier!

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)

Verfasst: 3. Juli 2007 00:22
von lepsai
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)
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...

Verfasst: 3. Juli 2007 09:38
von Burgpflanze
Also ich finde die Doku für Qt Klasse, im Gegensatz zur Doku für GTK+ :wink: