一. QT的label和opencv可以打开并显示摄像头视频
http://blog.csdn.net/llh318724/article/details/7007661
二.在一个ui界面调用另一个ui界面可以直接创建另一个ui的类对象,然后调用show()函数或者exec()函数即可,相互间消息的传递可以用文件读写的方式。
三.x为浮点数,用fabs(x-0)<1e-5而不是x==0.。
四.QString与string之间的转换
QString qstr;
string str;
str = qstr.toStdString();
qstr = QString::fromStdString(str);
五. “qDebug ()<<”可以输出一些信息到控制台
QMessageBox::warning(this, “Error select!”, “Please choose a TextFile!”);可以弹窗警告。
六.currentIndex()获取当前下标很好用,大量控件都可以用其currentIndex()获得有用的信号。
七.文件的操作QFile + QTextStream
将test.txt里的内容一行一行放到QVector里面;
QFile fPath("test.txt");
//这里要注意打开方式,ReadOnly,根据需求设置。
if (!fPath.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Open file failed.zzzzzzz";
}
QTextStream f(&fPath);
QString string_temp;
while(!f.atEnd())
{
string_temp = f.readLine();
qvector_temp.push_back(string_temp);
}
八.QT可以方便的获取当前系统时间
QDateTime time = QDateTime::currentDateTime();
QString str = time.toString(" yyyy-MM-dd hh:mm:ss ddd ");
九.使用listView
[注]可以用append一行一行加些字符串到上面,自动换行。
QStringList* sl = new QStringList();
QStringListModel* slm = new QStringListModel(this);
sl->append("1231231");
sl->append("asdfasd"));
sl->append(" ");
slm->setStringList(*sl);
ui->listView->setModel(slm);
10.利用QDir创建目录
QDir *temp2 = new QDir;
bool exist = temp2->exists("./photo");
//如果当前路径下photo目录不存在则创建。
if(!exist)
{
temp2->mkdir("./photo");
}
11.opencv里Mat类型和QT里QImage之间的转换
QImage cvMat2QImage(const cv::Mat& mat)
{
// 8-bits unsigned, NO. OF CHANNELS = 1
if(mat.type() == CV_8UC1)
{
QImage image(mat.cols, mat.rows, QImage::Format_Indexed8);
// Set the color table (used to translate colour indexes to qRgb values)
image.setColorCount(256);
for(int i = 0; i < 256; i++)
{
image.setColor(i, qRgb(i, i, i));
}
// Copy input Mat
uchar *pSrc = mat.data;
for(int row = 0; row < mat.rows; row ++)
{
uchar *pDest = image.scanLine(row);
memcpy(pDest, pSrc, mat.cols);
pSrc += mat.step;
}
return image;
}
// 8-bits unsigned, NO. OF CHANNELS = 3
else if(mat.type() == CV_8UC3)
{
// Copy input Mat
const uchar *pSrc = (const uchar*)mat.data;
// Create QImage with same dimensions as input Mat
QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_RGB888);
return image.rgbSwapped();
}
else if(mat.type() == CV_8UC4)
{
qDebug() << "CV_8UC4";
// Copy input Mat
const uchar *pSrc = (const uchar*)mat.data;
// Create QImage with same dimensions as input Mat
QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_ARGB32);
return image.copy();
}
else
{
qDebug() << "ERROR: Mat could not be converted to QImage.";
return QImage();
}
}
12.QT类型转换九种。