Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QSystemNetworkInfo cellIdChanged(int)未在设备中发出_Qt_Qt4_Nokia_Cellid - Fatal编程技术网

Qt QSystemNetworkInfo cellIdChanged(int)未在设备中发出

Qt QSystemNetworkInfo cellIdChanged(int)未在设备中发出,qt,qt4,nokia,cellid,Qt,Qt4,Nokia,Cellid,我正在尝试制作一个Qt程序,每当网络CellId发生变化时调用一个函数 这是我的类声明(我没有将一些成员显示在问题范围之外): 在构造函数中: networkInfo = new QSystemNetworkInfo(); mcc = networkInfo->currentMobileCountryCode(); qDebug()<<mcc; //I Get a proper debug output mnc = networkInfo->currentMobileNe

我正在尝试制作一个Qt程序,每当网络CellId发生变化时调用一个函数

这是我的类声明(我没有将一些成员显示在问题范围之外):

在构造函数中:

networkInfo = new QSystemNetworkInfo();
mcc = networkInfo->currentMobileCountryCode();
qDebug()<<mcc; //I Get a proper debug output
mnc = networkInfo->currentMobileNetworkCode();
lac = QString::number(networkInfo->locationAreaCode());
cid = QString::number(networkInfo->cellId());
set("mccvar",mcc);  //set(QString,QString) is my own method to display information, and it works
set("mncvar",mnc);
set("lacvar",lac);
set("cidvar",cid);
我可以动态地看到网络信号,我的意思是,如果信号在这一秒是60%,它会显示60(通过我的set()方法),如果信号在下一秒是90%,它会立即显示90。 这在Qt模拟器和我的设备中都可以使用。(当插槽定义更新网络强度更改的显示值时)

但是当谈到cellid时,cellid显示的是对象构建时的情况 即使我用不同的cellid将手机移动到不同的位置(由另一个应用程序验证),它也会永远保持在那里,它仍然是在对象构造期间的位置。但这在Qt模拟器中运行得很好,如果我更改cellid,插槽就会被调用。我还尝试在插槽定义中再次设置新的cellid值,如set(“cidvar”,newcidvalue),我认为这是必要的。但插槽从未在设备中被调用,但正如前面所说,它在Qt模拟器中工作。 那么,有人能帮我找出哪里错了,或者用其他方法来检测cellid的变化吗

最后一件事,我已经记录了,因为这个类涉及Q_对象

networkInfo = new QSystemNetworkInfo();
mcc = networkInfo->currentMobileCountryCode();
qDebug()<<mcc; //I Get a proper debug output
mnc = networkInfo->currentMobileNetworkCode();
lac = QString::number(networkInfo->locationAreaCode());
cid = QString::number(networkInfo->cellId());
set("mccvar",mcc);  //set(QString,QString) is my own method to display information, and it works
set("mncvar",mnc);
set("lacvar",lac);
set("cidvar",cid);
Mgr ob;
QObject::connect(ob.networkInfo, SIGNAL(cellIdChanged(int)), &ob, SLOT(onCidChange(int))); //The slot is never called even if cellid changes on device, but works on simulator
QObject::connect(ob.networkInfo, SIGNAL(networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode,int)),&ob,SLOT(NetworkStrengthChange(QSystemNetworkInfo::NetworkMode,int)));  //Works great