信号和槽的相关问题:
工作后发现,使用信号和槽的时候,如果给信号和槽传入一个比较复杂的类型的话需要注册一下这个类型:
例如:
qRegisterMetaType<Mat>("Mat");
qRegisterMetaType<e_CameraType>("e_CameraType");
connect(m_Parameter, SIGNAL(SendAlgoImageToMainWindow(Mat, e_CameraType, int, bool)), this,
SLOT(ReceiveImage(Mat, e_CameraType, int, bool)));
如果不注册,信号槽会捕捉不到。
QT中显示图像的基本操作:
QImage image = matToQImage(*src_image);
image = image.scaled(ui.label_show->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
//显示图像
ui.label_show->setPixmap(QPixmap::fromImage(image));
//主要就是
ui.label_show->setPixmap(QPixmap::fromImage(Qimage的图像))
toLocal8Bit:Unicode编码
toLatin1:ASCII编码
方法:QString→QByteArray→char数组
QString str("this is QString");
QByteArray arr = str.toLocal8Bit();//Unicode编码
QByteArray arr = str.toLatin1();//ASCII编码
char *cstr = arr.data();
qDebug() << "cstr" << cstr ;//this is QString
while(*cstr)
{
qDebug() << "[" << *cstr << "]";//每行输出一个字母
}
char data[64]{0};
strcpy_s(data, arr.size() + 1, arr.data());
QString::fromLocal8Bit(“显示中文:”)
QByteArray ba = m_IP.toLocal8Bit();
char *strIp = ba.data();
data返回一个指向字符数组的指针,长度为size()+1,’\0’为终止符。
绝对路径
QString IniName = QCoreApplication::applicationDirPath();//绝对路径
//D:/SMore/Demo/build-testdemo-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug
QString和string的互相转换
1.QString转换String
string s = qstr.toStdString();
2.String转换QString
QString qstr2 = QString::fromStdString(s);