wie man sieht bin ich hier genauso neu wie bei der QT programmierung.
Bin 28, Student der Informatik und bin grad im Praktikum wo ich ne Anwendung mit QT4 programmieren soll.
Mein derzeitiges Problem besteht darin das ich eine separate Klasse zur erstellung der Menus geschrieben habe (damit flexibilitaet beim ersetzen/abaendern der Menus gewahrt bleibt) und ich nun die MenuBar in mein Main Widget (application Window) einfuegen will.
Das erstellen scheint ohne problem zu funktionieren, laut kdbg.
Leider zeigt es die Menus nicht an, und ich finde einfach das Problem nicht.
Ich kann nicht bestreiten das es moeglicherweise auch ein allgemeiner Verstaendnissfehler QT betreffend ist.
Ich wuerde einfach mal die Kostrkutoren der klassen und die betreffenden Funktionen posten.
Aufruf zum erstellen der Menus im Main Widget
Code: Alles auswählen
void gemo::addMenus( void )
{
menu* fm = new menu(this, this);
QMenuBar *bar = new QMenuBar(this);
bar = fm->getMenuBar();
}
Code: Alles auswählen
menu::menu(QObject *that, QWidget *thatthat)
{
parentObjectPointer = that;
parentWidgetPointer = thatthat;
applicationBar = new QMenuBar(parentWidgetPointer);
fileMenu = new QMenu(parentWidgetPointer);
createActions();
applicationBar->addMenu(fileMenu);
applicationBar->addMenu(editMenu);
applicationBar->addMenu(drawMenu);
applicationBar->addMenu(vMenu);
applicationBar->addMenu(viewMenu);
applicationBar->addMenu(helpMenu);
}
Beispiel fuer Konstruktfnkt der Actionen im Menu
Code: Alles auswählen
newAction = new QAction(tr("&New"), parentObjectPointer);
newAction->setShortcut(tr("Ctrl+N"));
newAction->setIcon(QIcon(":/images/filenew..xpm"));
newAction->setStatusTip(tr("Create a new network file"));
connect(newAction, SIGNAL(triggered()),parentObjectPointer, SLOT(newFile()));
createMenus(fileMenu, newAction, 0, "New", "File");
Code: Alles auswählen
void menu::createMenus(QMenu* tmpMenu, QAction* tmpAction, int MultiMenu, QString Name, QString MenuName)
{
if ( MultiMenu > 0 )
{
for ( int i=0;i<MultiMenu;i++ )
{
tmpMenu->addAction(recentFileActions[i]);
}
}
else
{
tmpMenu->addAction (tmpAction);
}
if(MenuName == "File")
{
fileMenu=tmpMenu;
}
else if(MenuName == "Edit")
{
editMenu=tmpMenu;
}
else if(MenuName == "Draw")
{
drawMenu=tmpMenu;
}
else if(MenuName == "Vis")
{
vMenu=tmpMenu;
}
if(MenuName == "View")
{
viewMenu=tmpMenu;
}
if(MenuName == "Help")
{
helpMenu=tmpMenu;
}
}
Und so wie es aussieht scheint von seitens der Pointer kein problem zu bestehten, die werden alle korrekt durchgereicht. Nur das mein Menu nicht erscheint wenn ich die Anwendung starte.
Entwicklungsumgebung ist KDevelop 3.5.7 und QT 4.4.1 und ich schreibe die Anwendung von Hand, ohne QTDesigner.
Gut, ich hoffe das waren ausreichend Informationen und ihr koennt mir moeglicherweise helfen.
MfG koma