Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 112b0974ad288f6cd55bf971ee6026a9 > files > 833

libqt3-devel-3.0.2-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /tmp/qt-3.0-reggie-28534/qt-x11-free-3.0.2/examples/process/process.doc:5 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Starting processes with IO redirection</title>
<style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
--></style>
</head>
<body>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
 <a href="index.html">
<font color="#004faf">Home</font></a>
 | <a href="classes.html">
<font color="#004faf">All&nbsp;Classes</font></a>
 | <a href="mainclasses.html">
<font color="#004faf">Main&nbsp;Classes</font></a>
 | <a href="annotated.html">
<font color="#004faf">Annotated</font></a>
 | <a href="groups.html">
<font color="#004faf">Grouped&nbsp;Classes</font></a>
 | <a href="functions.html">
<font color="#004faf">Functions</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Starting processes with IO redirection</h1>

 
<p> 
<p> This example shows you how to start other processes with Qt and how 
IO redirection is done. The example tries to start the uic (a tool
that comes with the Qt Designer) on a certain ui file and displays the
output of the command.
<p> <hr>
<p> Implementation (process.cpp):
<p> <pre>/****************************************************************************
** $Id:  qt/process.cpp   3.0.2   edited Oct 12 12:18 $
**
** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
**
** This file is part of an example program for Qt.  This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/

#include &lt;<a href="qobject-h.html">qobject.h</a>&gt;
#include &lt;<a href="qprocess-h.html">qprocess.h</a>&gt;
#include &lt;<a href="qvbox-h.html">qvbox.h</a>&gt;
#include &lt;<a href="qtextview-h.html">qtextview.h</a>&gt;
#include &lt;<a href="qpushbutton-h.html">qpushbutton.h</a>&gt;
#include &lt;<a href="qapplication-h.html">qapplication.h</a>&gt;
#include &lt;<a href="qmessagebox-h.html">qmessagebox.h</a>&gt;

#include &lt;stdlib.h&gt;

class UicManager : public <a href="qvbox.html">QVBox</a>
{
    <a href="metaobjects.html#Q_OBJECT">Q_OBJECT</a>

public:
    UicManager();
    ~UicManager() {}

public slots:
    void readFromStdout();
    void scrollToTop();

private:
    <a href="qprocess.html">QProcess</a> *proc;
    <a href="qtextview.html">QTextView</a> *output;
    <a href="qpushbutton.html">QPushButton</a> *quitButton;
};

<a name="f288"></a>UicManager::UicManager()
{
    // Layout
    output = new <a href="qtextview.html">QTextView</a>( this );
    quitButton = new <a href="qpushbutton.html">QPushButton</a>( <a href="qobject.html#tr">tr</a>("Quit"), this );
    <a href="qobject.html#connect">connect</a>( quitButton, SIGNAL(<a href="qbutton.html#clicked">clicked</a>()),
            qApp, SLOT(<a href="qapplication.html#quit">quit</a>()) );
    <a href="qwidget.html#resize">resize</a>( 500, 500 );

    // QProcess related code
    proc = new <a href="qprocess.html">QProcess</a>( this );

    // Set up the command and arguments.
    // On the command line you would do:
    //   uic -tr i18n "small_dialog.ui"
<a name="x867"></a>    proc-&gt;<a href="qprocess.html#addArgument">addArgument</a>( "uic" );
    proc-&gt;<a href="qprocess.html#addArgument">addArgument</a>( "-tr" );
    proc-&gt;<a href="qprocess.html#addArgument">addArgument</a>( "i18n" );
    proc-&gt;<a href="qprocess.html#addArgument">addArgument</a>( "small_dialog.ui" );

<a name="x870"></a>    <a href="qobject.html#connect">connect</a>( proc, SIGNAL(<a href="qprocess.html#readyReadStdout">readyReadStdout</a>()),
            this, SLOT(readFromStdout()) );
<a name="x868"></a>    <a href="qobject.html#connect">connect</a>( proc, SIGNAL(<a href="qprocess.html#processExited">processExited</a>()),
            this, SLOT(scrollToTop()) );

<a name="x871"></a>    if ( !proc-&gt;<a href="qprocess.html#start">start</a>() ) {
        // error handling
<a name="x866"></a>        QMessageBox::<a href="qmessagebox.html#critical">critical</a>( 0,
                <a href="qobject.html#tr">tr</a>("Fatal error"),
                <a href="qobject.html#tr">tr</a>("Could not start the uic command."),
                <a href="qobject.html#tr">tr</a>("Quit") );
        exit( -1 );
    }
}

void <a name="f289"></a>UicManager::readFromStdout()
{
    // Read and process the data.
    // Bear in mind that the data might be output in chunks.
<a name="x873"></a><a name="x869"></a>    output-&gt;<a href="qtextedit.html#append">append</a>( proc-&gt;<a href="qprocess.html#readStdout">readStdout</a>() );
}

void <a name="f290"></a>UicManager::scrollToTop()
{
<a name="x872"></a>    output-&gt;<a href="qscrollview.html#setContentsPos">setContentsPos</a>( 0, 0 );
}

int main( int argc, char **argv )
{
    <a href="qapplication.html">QApplication</a> a( argc, argv );
    UicManager manager;
    a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( &amp;manager );
    manager.<a href="qwidget.html#show">show</a>();
    return a.<a href="qapplication.html#exec">exec</a>();
}

#include "process.moc"
</pre>

<p>See also <a href="qprocess-examples.html">QProcess Examples</a>.

<!-- eof -->
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright &copy; 2001 
<a href="http://www.trolltech.com">Trolltech</a><td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
<td align=right><div align=right>Qt version 3.0.2</div>
</table></div></address></body>
</html>