| kemi (statz) | ![]() #2, Főfasz (2982) |
2085 | #2c96 | ^ | Idézet | Sat, 17 May 2014 20:32:25 +02 |
| 94.21.*.* |
|
*.pool.digikabel.hu |
| Az emberi agy bonyolultságát meg sem közelíti egy mai számítógép, meg a mesterséges intelligencia se tart még ott, hogy gondolkodó, önálló tudattal rendelkező gépeket építsünk. A gúglinál van erre kísérlet, de már Asimov is megmondta, hogy hosszú távon nagyon nem lesz jó, ha Istent játszunk. TCH, megoldottam a processes problémát: widget.h: #ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QProcess>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
void on_process_readyReadStandardOutput();
private:
Ui::Widget *ui;
QProcess process;
};
#endif // WIDGET_Hwidget.cpp: #include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(on_process_readyReadStandardOutput()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
process.start("zip --help");
}
void Widget::on_process_readyReadStandardOutput() {
ui->plainTextEdit->setPlainText(process.readAllStandardOutput());
}A QProcessnek van egy readyReadStandardOutput szignálja, ami akkor váltódik ki, ha jön valami a standard output csatornán (ugyanígy megvan az errorra is). A slot-signal összekapcsolást a connect függvény végzi. A slotok standard formátuma mindig on_objektumnév_szignálnév(). A widgeteknél ezeket szépen összekapcsolja automatikusan a qmake, viszont ami nincs benne a kezelőfelületet leíró XML-ben ott kódolni kell. Így már szépen megjelent a zip helpje a textboxban. Slot/signal vs eventre egy kis olvasmány: http://stackoverflow.com/questions/3794649/qt-events-and-signal-slots Vagyis az event az, ami szigorúan külső forrásból váltódik ki, és eltérően is kell kezelni. |