QT学习笔记2:QT中常用函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

QT学习笔记2:QT中常⽤函数
⼀、QString转number
QString number(long n, int base = 10)
QString number(ulong n, int base = 10)
QString number(int n, int base = 10)
QString number(uint n, int base = 10)
QString number(qlonglong n, int base = 10)
QString number(qulonglong n, int base = 10)
QString number(double n, char format = 'g', int precision = 6)
整形的转换格式都是⼀样的,第⼀个参数是⼗进制要转换的整数,第⼆个参数指定以什么进制来转换,默认是⼗进制,⽐如:QString strNumDec = QString::number(55, 10); //转化成10进制
QString strNumHex = QString::number(55, 16); //16进制
QString strNumBit = QString::number(55, 2); //2进制
第⼆个参数base必须在[2,36]之间,当base为10以外的值时,第⼀个参数n将被视为⽆符号整数。

⼆、number 转 QString
double toDouble(bool * ok = 0) const
float toFloat(bool * ok = 0) const
int toInt(bool * ok = 0, int base = 10) const
long toLong(bool * ok = 0, int base = 10) const
qlonglong toLongLong(bool * ok = 0, int base = 10) const
short toShort(bool * ok = 0, int base = 10) const
QString也提供了⼀系列转换成数值的函数,参数ok指⽰转换是否出错,参数base指⽰当前QString是什么进制,如
QString str = "55";
bool ok;
int numBit = str.toInt(&ok, 2);
int numOct = str.toInt(&ok, 8);
int numDec = str.toInt(&ok, 10);
int numHex = str.toInt(&ok, 16);
三、QPixmap加载图⽚并获取图⽚宽和⾼
void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPixmap pix;
//加载图⽚
pix.load("D:\\1001.jpg");
//获得图⽚的宽和⾼
qreal width = pix.width();
qreal height = pix.height();
//图⽚放⼤两倍
pix = pix.scaled(width*2,height*2,Qt::KeepAspectRatio);
painter.drawPixmap(0,0,100,100,pix);
}
四、QString与String转换
//QString转换String
string s = qstr.toStdString();
//String转换QString
QString qstr2 = QString::fromStdString(s);
这样虽然能成功,但是会出现中⽂乱码情况。

转化与乱码处理
std::string cstr;
QString qstring;
//从std::string 到QString
qstring = QString(QString::fromLocal8Bit(cstr.c_str()));
//从QString 到 std::string
cstr = string((const char *)qstring.toLocal8Bit());
//不需要从gbk转到utf8
QString value_content = QString::fromStdString(vec[i].content);
QString value_classname = QString::fromStdString(vec[i].classname);
五、判断⽂件或者⽂件夹是否存在
1. 判断⽂件夹是不是存在
参数说明:
QString fullPath;//⽂件夹全路径
/*⽅法1*/
bool isDirExist(QString fullPath)
{
QDir dir(fullPath);
if(dir.exists())
{
return true;
}
return false;
}
/*⽅法2*/
bool isDirExist(QString fullPath)
{
QFileInfo fileInfo(fullPath);
if(fileInfo.isDir())
{
return true;
}
return false;
}
2. 判断⽂件是不是存在
参数说明:
QString fullFileName;//⽂件全路径(包含⽂件名)
bool isFileExist(QString fullFileName)
{
QFileInfo fileInfo(fileFullName);
if(fileInfo.isFile())
{
return true;
}
return false;
}
六、图像旋转
第⼀种⽅案
使⽤ QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图⽚中⼼为旋转点,不能设置旋转的中⼼点,使⽤如下:QMatrix matrix;
matrix.rotate(45);
QLabel *Label= new QLabel();
Label->setPixmap(QPixmap(“:/images.png”).transformed(matrix, Qt::SmoothTransformation));
该段程序实现的效果是使图⽚顺时针旋转 45 度。

第⼆种⽅案
使⽤ QPainter 这位“画家”,⽰例程序如下:
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPixmap disc(":/disc.png");
/* 碟机转动 */
if(imageRotate++ == 360)
imageRotate = 0;
/* 设定旋转中⼼点 */
painter.translate(130,150);
/* 旋转的⾓度 */
painter.rotate(imageRotate);
/* 恢复中⼼点 */
painter.translate(-130,-150);
/* 画图操作 */
painter.drawPixmap(40,60,180,180, disc);
}。

相关文档
最新文档