Using the Motif Event Loop
Header
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <qmainwindow.h>
class QMotifWidget;
class MainWindow : public QMainWindow
{
public:
MainWindow();
private:
QMotifWidget *customwidget;
};
#endif // MAINWINDOW_H
Implementation:
#include "mainwindow.h"
#include <qapplication.h>
#include <qmotif.h>
int main( int argc, char **argv )
{
XtSetLanguageProc( NULL, NULL, NULL );
QMotif integrator( "customwidget" );
QApplication app( argc, argv );
MainWindow mainwindow;
app.setMainWidget( &mainwindow );
mainwindow.show();
return app.exec();
}
#include "mainwindow.h"
#include <qapplication.h>
#include <qmenubar.h>
#include <qpopupmenu.h>
#include <qstatusbar.h>
#include <qmotifwidget.h>
#include <Xm/Form.h>
#include <Xm/PushB.h>
#include <Xm/Text.h>
MainWindow::MainWindow()
: QMainWindow( 0, "mainwindow" )
{
QPopupMenu *filemenu = new QPopupMenu( this );
filemenu->insertItem( tr("&Quit"), qApp, SLOT(quit()) );
menuBar()->insertItem( tr("&File"), filemenu );
statusBar()->message( tr("This is a QMainWindow with an XmText widget.") );
customwidget =
new QMotifWidget( this, xmFormWidgetClass, NULL, 0, "form" );
XmString str;
Arg args[6];
str = XmStringCreateLocalized( "Push Button (XmPushButton)" );
XtSetArg( args[0], XmNlabelString, str );
XtSetArg( args[1], XmNleftAttachment, XmATTACH_FORM );
XtSetArg( args[2], XmNrightAttachment, XmATTACH_FORM );
XtSetArg( args[3], XmNbottomAttachment, XmATTACH_FORM );
Widget button =
XmCreatePushButton( customwidget->motifWidget(), "Push Button", args, 4 );
XmStringFree( str );
XtSetArg( args[0], XmNeditMode, XmMULTI_LINE_EDIT );
XtSetArg( args[1], XmNleftAttachment, XmATTACH_FORM );
XtSetArg( args[2], XmNrightAttachment, XmATTACH_FORM );
XtSetArg( args[3], XmNtopAttachment, XmATTACH_FORM );
XtSetArg( args[4], XmNbottomAttachment, XmATTACH_WIDGET );
XtSetArg( args[5], XmNbottomWidget, button );
Widget texteditor =
XmCreateScrolledText( customwidget->motifWidget(), "Text Editor", args, 6 );
XtManageChild( texteditor );
XtManageChild( button );
setCentralWidget( customwidget );
resize( 400, 600 );
}
See also QMotif Support Extension.