VS2015 QT5

QT5:

1.获取类

h:
private:
    static Pjsip* pThis;
CPP:
Pjsip::Pjsip(QWidget *parent)
    : QMainWindow(parent)
{
    pThis = this;
    ui.setupUi(this);

}
Pjsip* Pjsip::getInstance()
{

    return pThis;
}

2.QString消息传递

h:
public:
    bool nativeEvent(const QByteArray & eventType, void * message, long * result);
cpp:

接收端:

bool Pjsip::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
    if (eventType == "windows_generic_MSG")
    {
        PMSG msg = (PMSG)message;
        if (msg->message == WM_USER + 777)
        {

            COPYDATASTRUCT * p = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
            char* temp = static_cast<char*>(p->lpData);
            QString str = QString(QLatin1String(temp));
            Log(str);//自定义Log函数

        }
    }
    return false;
}

发送端:

void Log2(QString str) {

    COPYDATASTRUCT cpd;
    cpd.dwData = 0;
    cpd.cbData = str.length() + 1;
    std::string txt = str.toStdString();
    const char* ch = txt.c_str();
    char *buf = new char[strlen(ch) + 1];
    strcpy(buf, ch);
    cpd.lpData = buf;

    PostMessage((HWND)Pjsip::getInstance()->winId(), (WM_USER + 777), NULL, (LPARAM)&cpd);

}

3.合并char*

char* combine(char *a, char *b) {
    char *c = new char[128];
    c = new char[strlen(a) + strlen(b) + 1];
    strcpy(c, a);
    strcat(c, b);
    return c;
}

4.char* QString 互转

    //QString转char * 
    QString str = “hello”;  
    QByteArray ba = str.toLatin1();  
    char *mm = ba.data();  


    QString nn = QString(QLatin1String(mm)); //char *转QString  

    //char* 转QString 推荐
    char *ch = "abcd";
    QString strzw(ch); 
    strzw = ch;

    //带中文
    char *ch = "abcd中国";
    QString strzw = QString::fromLocal8Bit(ch);

    char ch[] = "abcd中国";
    QString strzw = QString::fromLocal8Bit(ch);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值