Entwicklung von Applikationen in Qt 4.0, Teil 2
QMenuBar *menu_bar = menuBar();
QAction *file_menu_action = new QAction(menu_bar);
file_menu_action->setText("&File");
QMenu *file_menu = new QMenu(menu_bar);
file_menu_action->setMenu(file_menu);
menu_bar->addAction(file_menu_action);
file_menu und file_menu_action werden als Kinder der Menüleiste der Applikation erzeugt, wodurch wir uns um deren Deallokation nicht kümmern müssen. Man soll das Hinzufügen von Kindern im Baum von QObject-Elementen nicht mit dem Hinzufügen von Aktionen zu einem Widget verwechseln. Zum Schluss fügen wir unsere Aktionen zu file_menu hinzu.
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
m_dir_model = new DirModel(this);
m_left_widget = new DirWidget(m_dir_model);
m_right_widget = new DirWidget(m_dir_model);
QSplitter *splitter = new QSplitter(this);
splitter->addWidget(m_left_widget);
splitter->addWidget(m_right_widget);
setCentralWidget(splitter);
m_jump_to_home_action
= new QAction(QIcon(":/home.png"), tr("&Home"), this);
connect(m_jump_to_home_action, SIGNAL(triggered()),
this, SLOT(jumpToHome()));
m_jump_to_parent_action
= new QAction(QIcon(":/up.png"), tr("&Parent"), this);
connect(m_jump_to_parent_action, SIGNAL(triggered()),
this, SLOT(jumpToParent()));
m_quit_action = new QAction(QIcon(":/quit.png"), tr("&Quit"), this);
connect(m_quit_action, SIGNAL(triggered()),
this, SLOT(close()));
QMenu *file_menu = menuBar()->addMenu(tr("&File"));
file_menu->addAction(m_quit_action);
QMenu *dir_menu = menuBar()->addMenu(tr("&Directory"));
dir_menu->addAction(m_jump_to_home_action);
dir_menu->addAction(m_jump_to_parent_action);
QToolBar *tool_bar = addToolBar(tr("Directory"));
tool_bar->addAction(m_jump_to_home_action);
tool_bar->addAction(m_jump_to_parent_action);
}
Es bleibt noch eine Bemerkung, die den Aktionnamen betrifft. Der Name kann das '&'-Zeichen vor einem der Buchstaben enthalten. Die Klassen QMenuBar und QMenu zeigen diesen Buchstaben unterstrichen an, und wenn sie den Fokus besitzen, hat das Drücken des Buchstabens die Wahl der Aktion zur Folge. In unserem Fall wird das Menü geöffnet.
Zusammenfassung
Unsere Applikation ermöglicht, Verzeichnisse durchzusuchen, aber sie hat immer noch keine funktionalen Elemente wie Verschieben und Kopieren von Dateien. Im nächsten Monat wird ein Artikel über diese Eigenschaft erscheinen.
Über den Autor
Der Autor arbeitet bei der Firma Trolllech. Er beschäftigt sich mit der Entwicklung der Applikation Qt Designer und vieler anderen Qt-Klassen.
Lizenz
Dieser Artikel wurde im Magazin Programmieren unter Linux publiziert. Alle Rechte vorbehalten. Kostenlose Vervielfältigung und Vertreiben des Artikels ist in unveränderter Form gestattet.

