LINUX.ORG.RU

Я избавлюсь от оффтопега!


0

0

Привет всем! Пытаюсь перейти с оффтоп С++ Builder на QT4. Имеется такой код:
#include <QApplication>
#include <QLabel>

int main( int argc, char *argv[] )
{
QApplication app(argc, argv);
QLabel *label = new QLabel ( "Hello C++!" );
label->show();
return app.exec();
}
И еще такой:
#include <iostream.h>
#include <stdio.h>

int main()
{
cout << "a" ;
system("uname -a");
}
Теперь вопрос: как сделать, чтобы в первом приложении вместо "Hello C++!" выводился вывод команды uname -a? Спасибо.

anonymous

> #include <iostream.h> > #include <stdio.h>

Ужас-то какой.

> как сделать, чтобы ... выводился вывод команды uname -a?

man 3 popen, возможно в QT еще что-то есть.

watashiwa_daredeska ★★★★
()
Ответ на: комментарий от alphex_kaanoken

Я предложу нормальное решение такой задачи - создать подкласс, QLabel со слотом, подвешенным на сигнал finished процесса. Вполне себе qt-style решение задачи. Выглядит это примерно так.

syslabel.h
#ifndef SYSLABEL_H
#define SYSLABEL_H

#include <QLabel>
#include <QProcess>

class sysLabel : public QLabel
{
Q_OBJECT
public:
sysLabel(QWidget *parent = 0);
private:
QProcess *process;
public slots:
void showOnFinish();
};

#endif

syslabel.cpp
#include "syslabel.h"
#include <QMessageBox>

sysLabel::sysLabel(QWidget *parent)
:QLabel(parent)
{
process = new QProcess(this);
QString name = "/usr/bin/uname";
QStringList params;
params << "-a";

connect(process, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(showOnFinish()));
process->start(name, params);
}

void sysLabel::showOnFinish()
{
QString result = process->readAll();
setText(result);
resize(sizeHint());
}

main.cpp
#include <QApplication>
#include "syslabel.h"

int main( int argc, char *argv[] )
{
QApplication app(argc, argv);
sysLabel *label = new sysLabel();
label->show();
return app.exec();
}

teferiincub
()
Ответ на: комментарий от alex_custov

$ which uname
/usr/bin/uname 

Я сначала у себя скомпилил, потом запостил ;)

А вообще-то да. Можно просто "uname". Так наверное даже лучше.

teferiincub
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.