Qt C++ コードいろいろメモ
時々しか使わないので書き方思い出すためのメモ
■ charからQStringへの変換
QTextCodec* tc = QTextCodec::codecForLocale();
char *chr = "日本語";
QString qStr = QString(tc->toUnicode(chr));
■ QStringからcharへの変換
方法1
QString string = "moji";
char* pChar = string.toUtf8().data();
方法2
QString str ("Something");
char* ch = str.toStdString().C_str();
方法3
std::string str = my_qstring.toStdString();
const char* p = str.c_str();
方法4
QString str1 = "Test";
QByteArray ba = str1.toLocal8Bit();
const char *c_str2 = ba.data();
■ Qtでビルドして作成した.exeのあるパスの取得
QString exeFileDir= QApplication::applicationDirPath();
■ 外部Exeファイルの呼び出し
//exeファイル起動
QProcess *process_tmp = new QProcess(this);
QString exeFileDir= QApplication::applicationDirPath();
QString exefile = exeFileDir + "/---.exe";
process_tmp->start(exefile);
■ 2次元配列
//配列の作成
count = 10;
int **tmpAry = new int*[count];
for(int j = 0; j < count; j++){
tmpAry[j] = new int[count]();
}
//配列の利用
for(int k = 0; k < count; k++){
for(int j = 0; j < count; j++){
tmpRound[j][k] = 1;
}
}
}
//配列開放
for(int j = 0; j < count; j++){
delete[] tmpAry[j];
}
delete[] tmpAry;
■ 3次元配列
//配列の作成
int ***tmpAry = new int**[cntX];
for(int l = 0; l < cntX; l++){
tmpAry[l] = new int*[cntY];
for(int m = 0; m < cntY; m++){
tmpAry[l][m] = new int[cntZ]();
}
}
//配列の利用
for(int n = 0; n < cntZ; n++){
for(int m = 0; m < cntY; m++){
for(int l = 0; l < cntX; l++){
if(tmptmpAry[int(double(l) * ratioMax / ratioX)][int(double(m) * ratioMax / ratioY)][int(double(n) * ratioMax / ratioZ)] == 1){
tmpAry[l][m][n] = 1;
}
}
}
}
//配列開放
for(int l = 0; l < cntX; l++){
for(int m = 0; m < cntY; m++){
delete[] tmpAry[l][m];
}
delete[] tmpAry[l];
}
delete[] tmpAry;