[TOC]

QT学习笔记2

接qt_study_note1.md文件内容

1、QString和string之间的转换

string str;
QString qstr;

qstr = QString::fromStdString(str);
str = qstr.toStdString();

2、size_t和int之间的转换

vector<int> vec;
size_t cnt = vec.size();
int i = static_cast<int>(cnt);

3、中文乱码

qt中使用的是unicode编码或者utf8编码。注意转换。 return QString::fromLocal8Bit(str.c_str()); 并且可以使用base64编码进行转码保存,然后再解码读取。安全可靠。

4、QStandardItemModel

QStandardItemModel 是标准的以项数据(item data)为基础的标准数据模型类,通常与 QTableView 组合成 Model/View 结构,实现通用的二维数据的管理功能。

5、Qt中通过ui怎么引用不了pushbutton呢? 原来是这样…

可能是博主在创建ui时,使用可视化设计,用拖拽的方式进行布置按钮的。

6、qt的相对路径

https://blog.csdn.net/love_gaohz/article/details/12085905 https://tieba.baidu.com/p/3150302863

①绝对路径:QApplication::applicationDirPath();是获取的执行文件exe所在的路径(qdebug的路径)。 ②相对路径:这里所说的是QtCreater所用到的相对路径。在QtCreater中的“./”这个路径是bulid directory的路径。在QtCreater中可以手动设置。 Qt资源的相对路径:必须在工程的qrc文件中增加你需要的文件或者资源,引用方法是:":/路径/你的资源.png"

总结:最好在main中手动设置当前代码的路径。

//当前相对路径设置
QDir::setCurrent(CURRENT_DEMO_PATH);

QString applicationDirPath = QCoreApplication::applicationDirPath();
qDebug()<< "applicationDirPath = " <<applicationDirPath;

QString applicationFilePath = QCoreApplication::applicationFilePath();
qDebug()<< "applicationFilePath = " <<applicationFilePath;

QString currentPath = QDir::currentPath();  //方法一
qDebug() << "currentPath = " << currentPath;

char *current_path;     //方法二
current_path = getcwd(nullptr, 0);
if (current_path == nullptr) {
    qDebug("get current_path faild! err=%u, %s", errno, strerror(errno));
}

qDebug("current_path = %s", current_path);
currentPath = QDir::homePath();
qDebug() << "currentPath = " << currentPath;
currentPath = QDir::tempPath();
qDebug() << "currentPath = " << currentPath;

7、Qt休眠函数

可以使用Qt自带的Sleep()方法,但使用这个方法会导致主线程休眠,UI卡顿,所以采用以下函数进行休眠。

// 调用此函数时,传入所需休眠的毫秒数
bool MainWindow::sleep(unsigned int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while (QTime::currentTime() < dieTime)
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
    return true;
}

results matching ""

    No results matching ""