Здравствуйте, почему-то не компилируется код с использованием таймера.
C++ (Qt)
#include <QApplication>
#include <QtCore>
#include <QtGui>
QString ping_Around;
QStringList arguments;
QStringList arguments1;
QStringList arguments2;
QStringList arguments3;
QProcess myProcess;
QProcess myProcess1;
QProcess myProcess2;
QProcess myProcess3;
QStringList strlstPingResults;
QStringList strlstPingResults1;
QStringList strlstPingResults2;
QStringList strlstPingResults3;
QStringList Ss[4];
QGraphicsTextItem* itemText[4];
QString count_Pack[4];
class myClass : public QGraphicsScene {
Q_OBJECT
public:
myClass(QObject *parent = 0);
QTimer *timer;
public slots:
void timer_overflow();
private:
QGraphicsEllipseItem *item;
};
void myClass::timer_overflow() {
ping_Around = "/bin/ping";
arguments << "-c" << "4" << "10.31.3.130";
arguments1 << "-c" << "4" << "10.31.4.130";
arguments2 << "-c" << "4" << "10.31.5.130";
arguments3 << "-c" << "4" << "10.31.6.130";
myProcess.start(ping_Around, arguments);
myProcess.waitForFinished(4000);
myProcess1.start(ping_Around, arguments1);
myProcess1.waitForFinished(4000);
myProcess2.start(ping_Around, arguments2);
myProcess2.waitForFinished(4000);
myProcess3.start(ping_Around, arguments3);
myProcess3.waitForFinished(4000);
strlstPingResults<<myProcess.readAll();
Ss[0] = strlstPingResults[0].split('\n');
strlstPingResults1<<myProcess1.readAll();
Ss[1] = strlstPingResults1[0].split('\n');
strlstPingResults2<<myProcess2.readAll();
Ss[2] = strlstPingResults2[0].split('\n');
strlstPingResults3<<myProcess3.readAll();
Ss[3] = strlstPingResults3[0].split('\n');
for (int i = 0; i < 4; i++) {
if (Ss[i].count() > 1) {
count_Pack[i] = Ss[i][7].mid(23, 1);
}
}
this->setSceneRect(QRectF(-90, 0, 15, 15));
for (int i = 0; i < 4; i++) {
if (count_Pack[i].count() > 0) {
if (count_Pack[i] == "4") {
item = new QGraphicsEllipseItem(0, this);
item->setRect(QRectF(-90, -40 + (i * 16), 15, 15));
item->setBrush(QBrush(Qt::green));
}
}
else {
item = new QGraphicsEllipseItem(0, this);
item->setRect(QRectF(-90, -40 + (i * 16), 15, 15));
item->setBrush(QBrush(Qt::red));
}
}
}
myClass::myClass(QObject *parent): QGraphicsScene(parent)
{
timer = new QTimer;
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timer_overflow()));
timer->start(16500);
// ping_Around = "/bin/ping";
// arguments << "-c" << "4" << "10.31.3.130";
// arguments1 << "-c" << "4" << "10.31.4.130";
// arguments2 << "-c" << "4" << "10.31.5.130";
// arguments3 << "-c" << "4" << "10.31.6.130";
// myProcess.start(ping_Around, arguments);
// myProcess.waitForFinished(4000);
// myProcess1.start(ping_Around, arguments1);
// myProcess1.waitForFinished(4000);
// myProcess2.start(ping_Around, arguments2);
// myProcess2.waitForFinished(4000);
// myProcess3.start(ping_Around, arguments3);
// myProcess3.waitForFinished(4000);
//
// strlstPingResults<<myProcess.readAll();
// Ss[0] = strlstPingResults[0].split('\n');
// strlstPingResults1<<myProcess1.readAll();
// Ss[1] = strlstPingResults1[0].split('\n');
// strlstPingResults2<<myProcess2.readAll();
// Ss[2] = strlstPingResults2[0].split('\n');
// strlstPingResults3<<myProcess3.readAll();
// Ss[3] = strlstPingResults3[0].split('\n');
// for (int i = 0; i < 4; i++) {
// if (Ss[i].count() > 1) {
// count_Pack[i] = Ss[i][7].mid(23, 1);
// }
// }
// this->setSceneRect(QRectF(-90, 0, 15, 15));
//
// for (int i = 0; i < 4; i++) {
// if (count_Pack[i].count() > 0) {
// if (count_Pack[i] == "4") {
// item = new QGraphicsEllipseItem(0, this);
// item->setRect(QRectF(-90, -40 + (i * 16), 15, 15));
// item->setBrush(QBrush(Qt::green));
// }
// }
// else {
// item = new QGraphicsEllipseItem(0, this);
// item->setRect(QRectF(-90, -40 + (i * 16), 15, 15));
// item->setBrush(QBrush(Qt::red));
// }
// }
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
myClass m;
QGraphicsView v(&m);
v.setRenderHints(QPainter::Antialiasing);
v.show();
v.setGeometry(100, 100, 20, 100);
return app.exec();
}
Это моя первая программа на Qt, с таймером еще не работал, по примеру сделал
отсюдаБез таймера все работает отлично.
Вот вывод процесса сборки:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE=/usr/bin/qmake SUBPROJECTS= .build-conf
make[1]: Вход в каталог `/home/u0807/NetBeansProjects/QtApplication_2'
/usr/bin/qmake VPATH=. -o qttmp-Debug.mk nbproject/qt-Debug.pro
mv -f qttmp-Debug.mk nbproject/qt-Debug.mk
"/usr/bin/make" -f nbproject/qt-Debug.mk dist/Debug/GNU_1-Linux-x86/QtApplication_2
make[2]: Вход в каталог `/home/u0807/NetBeansProjects/QtApplication_2'
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -Inbproject -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -Inbproject -I. -o build/Debug/GNU_1-Linux-x86/main.o main.cpp
g++ -o dist/Debug/GNU_1-Linux-x86/QtApplication_2 build/Debug/GNU_1-Linux-x86/main.o -L/usr/lib/i386-linux-gnu -lQtGui -lQtCore -lpthread
build/Debug/GNU_1-Linux-x86/main.o: In function `myClass::myClass(QObject*)':
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:91: undefined reference to `vtable for myClass'
build/Debug/GNU_1-Linux-x86/main.o: In function `myClass::~myClass()':
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:30: undefined reference to `vtable for myClass'
collect2: error: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU_1-Linux-x86/QtApplication_2] Ошибка 1
make[2]: Выход из каталога `/home/u0807/NetBeansProjects/QtApplication_2'
make[1]: *** [.build-conf] Ошибка 2
make[1]: Выход из каталога `/home/u0807/NetBeansProjects/QtApplication_2'
make: *** [.build-impl] Ошибка 2
СОБРАТЬ FAILED (значение выхода 2,, общее время: 4s)