QWinEventNotifier:只能用于使用QThread启动的线程

时间:2013-05-06 08:37:11

标签: c++ qt usb dongle qextserialport

我正在尝试使用“QextSerialPort”打开我的Huwawei USB加密狗。

我的PORT详情如下

Port Name:
Product ID:
Physical Name: \Device\000000ca
Vendor Id:
Friend Name:  SB

Port Name:
Product ID:?
Physical Name: \Device\USBPDO-10
Vendor Id: ?
Friend Name:  TH

Port Name: COM3
Product ID:
Physical Name: \Device\BthModem0
Vendor Id:
Friend Name: Standard Serial over Bluetooth link (COM3)

Port Name: COM4
Product ID:
Physical Name: \Device\BthModem2
Vendor Id:
Friend Name: Standard Serial over Bluetooth link (COM4)

Port Name: COM5
Product ID:
Physical Name: \Device\BthModem1
Vendor Id:
Friend Name: Standard Modem over Bluetooth link

Port Name: COM6
Product ID:?
Physical Name: \Device\000000e2
Vendor Id: ?
Friend Name: HUAWEI Mobile Connect - 3G Application Interface (COM6)

Port Name: COM7
Product ID:?
Physical Name: \Device\000000e0
Vendor Id: ?
Friend Name: HUAWEI Mobile Connect - 3G Modem

Port Name: COM8
Product ID:?
Physical Name: \Device\000000e3
Vendor Id: ?
Friend Name: HUAWEI Mobile Connect - 3G PC UI Interface (COM8)

我试图打开我的USB加密狗,所以我可以发送短信。以下是我打开的代码

#include "MyClass.h"
#include <qstring.h>
#include <qdebug.h>


int main()
{
    QextSerialPort *port = new QextSerialPort("COM7");
    port->open(QIODevice::ReadWrite);
    cout << port->isOpen();

    system("pause");
    return 0;

}

当我运行此代码时,我得到的是

QWinEventNotifier: Can only be used with threads started with QThread 
1

这显示端口ID已打开,但该消息呢?这是否意味着我无法继续使用其他代码?在我编写任何其他内容之前,我想知道这一点。请帮忙!

1 个答案:

答案 0 :(得分:3)

最有可能的是,你需要创建一个QApplication,没有它,事件和信号/插槽等很多东西都不会起作用:

int main()
{
    QApplication app;

    QextSerialPort *port = new QextSerialPort("COM7");
    port->open(QIODevice::ReadWrite);
    cout << port->isOpen();

    system("pause");

    return app.exec();
}