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);