Schlaftänzer
03-08-2005, 00:54
hi qtjunks
Mein Problem ist, das ich gern ein Menü, eine Toolbar, ein Scrollview und ein Textfeld in einem Programm hätte.
In einem QWidget(child) sollen Textfelder angelegt werden.
Und MainWindow(parent) ist für die Menüfelder, Toolbars und Scrollview verantwortlich.
So weit bin ich:
Das Programm verfügt im fertigen zustand über ein Menü und eine Toolbar. Will ich aber zusätzlich ein Scrollview hinzufügen was das Qwidget(child) in das MainWindow mittels
scrollview->addchild(eingabefeld);
einbindet, verschwindet die Toolbar im fertigen Programm. Das Menü bleibt aber und das Textfeld erscheind auch.
Warum verschwindet die Toolbar? Wird sie evtl. vom childwidget überdeckt?
Hier mal noch der code:
/************************************************** *********************/
#include <qapplication.h>
#include <qwidget.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qmenubar.h>
#include <qscrollview.h>
#include <qpixmap.h>
#include <qmainwindow.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
/************************************************** *********************/
const char * dateiNeuText =
"Klicke auf diesen Button, um ein neues Fenster zu erzeugen."
"Dies ist auch moeglich mit dem <b>Neu-Menueeintrag </b>"
" vom Datei-Menue.";
/************************************************** *********************/
class Eingabefeld : public QWidget
{
Q_OBJECT
public:
Eingabefeld();
private:
QLineEdit *firmaE;
};
/************************************************** *********************/
class Menue : public QMainWindow
{
Q_OBJECT
public:
Menue();
signals:
void anzeige( const QString& );
private slots:
void neu() { emit anzeige( "Datei/Neu" ); }
private:
QMenuBar* menubalken;
QPopupMenu* dateimenu;
QScrollView* scrollview;
Eingabefeld* eingabefeld;
QToolBar* dateiTools;
QPixmap neuP;
void erzeugeToolBars( void );
protected:
virtual void resizeEvent( QResizeEvent* ) {
scrollview->setGeometry( 0, menubalken->height(),
width(), height() - menubalken->height() );
}
};
/************************************************** *********************/
#include "test.moc"
/************************************************** *********************/
Eingabefeld::Eingabefeld() : QWidget() {
firmaE = new QLineEdit( this );
firmaE->setGeometry( 60, 30, 260, 20);
QLabel* label1 = new QLabel( "Firma:", this );
label1->setGeometry( 10, 30, 40, 20);
}
/************************************************** *********************/
Menue::Menue() : QMainWindow (0,"Beispiel zu QMainWindow") {
neuP = QPixmap( "filenew.xpm" );
erzeugeToolBars();
QPopupMenu *datei = new QPopupMenu( this );
datei->insertItem( neuP, "&Neu", this, SLOT(neu()), CTRL+Key_N );
menubalken = new QMenuBar( this );
menubalken->insertItem( "&Datei", datei );
eingabefeld = new Eingabefeld();
eingabefeld->setGeometry( 0, 0, 500, 500 );
scrollview = new QScrollView( this );
scrollview->addChild( eingabefeld );
}
/************************************************** *********************/
void Menue::erzeugeToolBars( void ) {
dateiTools = new QToolBar( this );
QToolButton * dateiNeu = new QToolButton(
neuP, "Neue Datei", QString::null,
this, SLOT(neu()), dateiTools );
QToolTipGroup * dt = new QToolTipGroup( dateiTools );
QToolTip::add( dateiNeu, "Neue Datei",
dt, "Legt ein neues Fenster an");
(void)QWhatsThis::whatsThisButton( dateiTools );
QWhatsThis::add( dateiNeu, dateiNeuText );
dateiTools->show();
}
/************************************************** *********************/
int main( int argc, char *argv[] )
{
QApplication myapp( argc, argv );
Menue *mywidget = new Menue();
mywidget->setGeometry( 50, 50, 400, 100 );
myapp.setMainWidget( mywidget );
mywidget->show();
return myapp.exec();
}
/************************************************** *********************/
Beschäftige mich erst seit ein paar Wochen mit Qt. Also totaler Newbie, der euro Hilfe sucht. ;)
Danke
Gruß Jürgen
Mein Problem ist, das ich gern ein Menü, eine Toolbar, ein Scrollview und ein Textfeld in einem Programm hätte.
In einem QWidget(child) sollen Textfelder angelegt werden.
Und MainWindow(parent) ist für die Menüfelder, Toolbars und Scrollview verantwortlich.
So weit bin ich:
Das Programm verfügt im fertigen zustand über ein Menü und eine Toolbar. Will ich aber zusätzlich ein Scrollview hinzufügen was das Qwidget(child) in das MainWindow mittels
scrollview->addchild(eingabefeld);
einbindet, verschwindet die Toolbar im fertigen Programm. Das Menü bleibt aber und das Textfeld erscheind auch.
Warum verschwindet die Toolbar? Wird sie evtl. vom childwidget überdeckt?
Hier mal noch der code:
/************************************************** *********************/
#include <qapplication.h>
#include <qwidget.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qmenubar.h>
#include <qscrollview.h>
#include <qpixmap.h>
#include <qmainwindow.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
/************************************************** *********************/
const char * dateiNeuText =
"Klicke auf diesen Button, um ein neues Fenster zu erzeugen."
"Dies ist auch moeglich mit dem <b>Neu-Menueeintrag </b>"
" vom Datei-Menue.";
/************************************************** *********************/
class Eingabefeld : public QWidget
{
Q_OBJECT
public:
Eingabefeld();
private:
QLineEdit *firmaE;
};
/************************************************** *********************/
class Menue : public QMainWindow
{
Q_OBJECT
public:
Menue();
signals:
void anzeige( const QString& );
private slots:
void neu() { emit anzeige( "Datei/Neu" ); }
private:
QMenuBar* menubalken;
QPopupMenu* dateimenu;
QScrollView* scrollview;
Eingabefeld* eingabefeld;
QToolBar* dateiTools;
QPixmap neuP;
void erzeugeToolBars( void );
protected:
virtual void resizeEvent( QResizeEvent* ) {
scrollview->setGeometry( 0, menubalken->height(),
width(), height() - menubalken->height() );
}
};
/************************************************** *********************/
#include "test.moc"
/************************************************** *********************/
Eingabefeld::Eingabefeld() : QWidget() {
firmaE = new QLineEdit( this );
firmaE->setGeometry( 60, 30, 260, 20);
QLabel* label1 = new QLabel( "Firma:", this );
label1->setGeometry( 10, 30, 40, 20);
}
/************************************************** *********************/
Menue::Menue() : QMainWindow (0,"Beispiel zu QMainWindow") {
neuP = QPixmap( "filenew.xpm" );
erzeugeToolBars();
QPopupMenu *datei = new QPopupMenu( this );
datei->insertItem( neuP, "&Neu", this, SLOT(neu()), CTRL+Key_N );
menubalken = new QMenuBar( this );
menubalken->insertItem( "&Datei", datei );
eingabefeld = new Eingabefeld();
eingabefeld->setGeometry( 0, 0, 500, 500 );
scrollview = new QScrollView( this );
scrollview->addChild( eingabefeld );
}
/************************************************** *********************/
void Menue::erzeugeToolBars( void ) {
dateiTools = new QToolBar( this );
QToolButton * dateiNeu = new QToolButton(
neuP, "Neue Datei", QString::null,
this, SLOT(neu()), dateiTools );
QToolTipGroup * dt = new QToolTipGroup( dateiTools );
QToolTip::add( dateiNeu, "Neue Datei",
dt, "Legt ein neues Fenster an");
(void)QWhatsThis::whatsThisButton( dateiTools );
QWhatsThis::add( dateiNeu, dateiNeuText );
dateiTools->show();
}
/************************************************** *********************/
int main( int argc, char *argv[] )
{
QApplication myapp( argc, argv );
Menue *mywidget = new Menue();
mywidget->setGeometry( 50, 50, 400, 100 );
myapp.setMainWidget( mywidget );
mywidget->show();
return myapp.exec();
}
/************************************************** *********************/
Beschäftige mich erst seit ein paar Wochen mit Qt. Also totaler Newbie, der euro Hilfe sucht. ;)
Danke
Gruß Jürgen