kemi (statz) | #2, Főfasz (2970) |
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_H widget.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. |