QT学习(二)部分总结

一. 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类型转换九种。

http://www.cnblogs.com/findumars/p/5599438.html

猜你喜欢

转载自blog.csdn.net/ewfwewef/article/details/70941730
今日推荐