QT信号传递QVector到槽
SS.h
#ifndef SS_H #define SS_H #include <QVector> #include <QObject> #include <iostream> class SS : public QObject { Q_OBJECT public: void prt() { if (_vec.size() == 0) std::cout << "no data" << std::endl; for (int i=0; i<_vec.size(); ++i) std::cout << _vec[i] << " "; std::cout << std::endl; } void run() { QVector<int> vec; vec.push_back(1); vec.push_back(13); vec.push_back(113); emit notifyVector(vec); } public slots: void onGotVector(QVector<int> vec) { _vec = vec; } signals: void notifyVector(QVector<int>); private: QVector<int> _vec; }; #endif // SS_H
main.cpp
#include <QCoreApplication> #include "SS.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); char buf[13] = {0}; buf[0] = 'a'; QString qStr(buf); std::string sStr(buf, sizeof(buf)); std::cout << "QString: " << qStr.length() << std::endl; std::cout << "std::string: " << sStr.length() << std::endl; SS ss1, ss2; QObject::connect(&ss1, SIGNAL(notifyVector(QVector<int>)), &ss2, SLOT(onGotVector(QVector<int>))); ss2.prt(); ss1.run(); ss2.prt(); return a.exec(); }
运行结果:
QString: 1 std::string: 13 no data 1 13 113