char * 与 const char *的转换

  1. char *ch1="hello11";
  2. const char *ch2="hello22";
  3. ch2 = ch1;//不报错。但有警告
  4. ch1 = (char *)ch2;

char 与 QString的转换

char 转换为 QString

事实上方法有非常多中,我用的是:

  1. char a='b';
  2. QString str;
  3. str=QString(a);

QString 转换为 char

方法也有非常多种

  1. QString str="abc";
  2. char *ch;
  3. QByteArray ba = str.toLatin1()
  4. ch = ba.data();

注意:在调用QByteArray.data()之前。必需要先显示储存这个bytearray。

像这样const char *ch = str.toLatin1().data();会使程序崩溃,由于QByteArray没有被储存。调用data()前是不存在的,必须先显式调用一次toLatin1()。再调用data()。

QByteArray 与 char* 的转换

QByteArray 转换为 char *

  1. char *ch;//不要定义成ch[n];
  2. QByteArray byte;
  3. ch = byte.data();

char * 转换为 QByteArray

  1. char *ch;
  2. QByteArray byte;
  3. byte = QByteArray(ch);

QString 与 QByteArray 的转换

QString转换为QByteArray

  1. QByteArray byte;
  2. QString string;
  3. byte = string.toAscii();

QByteArray 转换为 QString

  1. QByteArray byte;
  2. QString string;
  3. string = QString(byte);

这里再对这俩中类型的输出总结一下:

  1. qDebug()<<"print";
  2. qDebug()<<tr("print");
  3. qDebug()<<ch;(ch char类型)
  4. qDebug()<<tr(ch);
  5. qDebug()<<byteArray;(byteArrayQByteArray类型)
  6. qDebug()<<tr(byteArray);
  7. qDebug()<<str;(str Qstring类型)

可是qDebug()<<tr(str);是不能够的,要想用tr()函数输出QString类型的字符则要例如以下:

  1. qDebug()<<tr(str.toLatin1);

int与 QString 的转换

int 转 QString

  1. int a=10;
  2. QString b;
  3. b=QString::number(a)

QString 转int

  1. QString a="120"
  2. int b;
  3. b=a.toInt()

QString与string的转换

QString –> string

  1. QString.toStdString();
  2. string --> QString
  3. QString::fromStdString(string)

QString与其它类型的转换

QString —>int,double,char *

  1. QString::toInt()
  2. QString::toDouble()
  3. QString.toStdString().c_str();

int double char* —>string

能够採用里的stringstream

以int 为例,

  1. int a = 3;
  2. stringstream ss;
  3. string strInt;
  4. ss<<a;
  5. ss>>strInt;

QString—>QDateTime

QDateTime转QString

  1. public QDateTime qdate = QDateTime.currentDateTime();
  2. datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
  3. //2012年03月-05日Monday13:48:55
  4. QString转换成QDateTime
  5. QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02","'M'M'd'd'y'yyhh:mm:ss");

QString –>Char*

Qstring 转换char*问题!

方法一:

  1. QString qstr("hello,word");
  2. const char * p = qstr.toLocal8Bit().data();

方法二:

  1. const char *p = qstr.toStdString().data();
  2. //转换过来的是常量

方法三:

  1. QString str="abc";
  2. char *ch;
  3. QByteArray ba = str.toLatin1()
  4. ch = ba.data();

或者

  1. QString tmp = "test";
  2. QByteArray text = tmp.toLocal8Bit();
  3. char *data = new char[text.size() + 1]
  4. strcpy(data, text.data());
  5. delete [] data;

QDateTime 转换为 QString

  1. QString strBuffer;
  2. QDateTime time;
  3. time = QDateTime::currentDateTime();
  4. strBuffer = time.toString("yyyy-MM-dd hh:mm:ss");
  5. // strBuffer = 2015-12-21 17:35:00

String 转换为 QDateTime

  1. QString strBuffer;
  2. QDateTime time;
  3. strBuffer = "2010-07-02 17:35:00";
  4. time = QDateTime::fromString(strBuffer, "yyyy-MM-dd hh:mm:ss");

Qt中的对象类型转换的更多相关文章

  1. Qt中的对象类型转换(Qstring 转换char*有三种方法)

    char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = c ...

  2. Qt中的强制类型转换

    在C++开发中经常要进行数据类型的强制转换. 刚开始学习的时候,直接对基本数据类型强制类型转换,如float fnum = 3.14; int num = (int)fnum; 随着C++标准的发展, ...

  3. qt 中的对象树

    本节内容讲解了什么是对象树以及其所带来的 GUI 编程好处.最后说明了在对象树中析构顺序问题并举了个特殊的例子,来说明平时编程中需要注意的一个点. 什么是对象树? 我们常常听到 QObject 会用对 ...

  4. Qt中图元对象的多重集成

    在继承自定义QGraphicsItem图元对象时,有时需要用到信号/槽机制,由于QGraphicsItem非QObject的子类 所以需要多重继承QObject,有一点需要特别注意:就是继承的顺序,一 ...

  5. Qt中使用ActiveX(3篇)

    由于最近需要使用ActiveX,一般来说可以使用微软提供的MFC或者ATL框架来开发,由于我个人对这部分内容不是很熟悉,好在Qt也提供对于ActiveX的支持.本文主要记录个人学习ActiveX的一些 ...

  6. Qt中如何根据类名来实例化对象

    对于Qt 来说,是可以做到运行时,根据对象的类名字(字符串)来获得对象的实例的,这点和一些语言的反射机制是一样的. 但是在Qt中,我们需要所额外的一步,就是注册.只要做到了注册,我们就可以 自由的创建 ...

  7. Qt 中使用Singleton模式需小心

    在qt中,使用Singleton模式时一定要小心.因为Singleton模式中使用的是静态对象,静态对象是直到程序结束才被释放的,然而,一旦把该静态对象纳入了Qt的父子对象体系,就会导致不明确的行为. ...

  8. JavaScript中的数据类型转换

    本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ...

  9. QT 中 关键字讲解(emit,signal,slot)

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

随机推荐

  1. 使用PropTypes进行类型检测

    PropTypes 是react提供的用于检验数据类型的typechecking,避免应用越来越大的时候出现意料之外的bug class Greeting extends React.Componen ...

  2. 【ZOJ4060】 Flippy Sequence(规律)

    题意:给定两个长度为n的01序列A和B,要求分别从两个序列中取两段将段中数字取反,使得A和B完全相同,求方案数 n<=1e6,sum(n)<=1e7 思路:现场8Y…… 将A和B异或之后问 ...

  3. Syslinux使用

    1. 介绍 Syslinux是一个功能强大的引导加载程序, 可以装在U盘上来引导系统 在5.00版本以前,几乎所有c32模块是独立的,即没有其他模块依赖:但在5.00以后,很多c32模块则是依赖于其他 ...

  4. MySQL 手动主从同步不锁表

    有时候MySQL主从同步不一致比较严重的时候,需要手动同步. 然而网上看大很多需要锁表的同步的方法基本如下 1.先对主库锁表 FLUSH TABLES WITH READ LOCK; 2.备份数据 m ...

  5. SQL SERVER 查询一个表有多少列

    ) from syscolumns where id = object_id('tbname') 或者 select * from syscolumns where id = object_id('t ...

  6. 第十三届北航程序设计竞赛决赛网络同步赛 B题 校赛签到(建树 + 打标记)

    题目链接  校赛签到 对每个操作之间建立关系. 比较正常的是前$3$种操作,若第$i$个操作属于前$3$种,那么就从操作$i-1$向$i$连一条有向边. 比较特殊的是第$4$种操作,若第$i$个操作属 ...

  7. HDU——最大连续子序列(区间DP)

    上一个题的加强版! 最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. GLB串

    题目描述 只要一个字符串中包含大写“GLB”,高老板就认为这是一个GLB串.现在给你一些字符串,请你帮高老板判断这些字符串是不是GLB串. 输入 首先是一个整数T,表示T行数据,每行一个字符串(只包括 ...

  9. PostgreSQL 10.0 preview 功能增强

    https://yq.aliyun.com/users/1384833841157402?spm=5176.100239.blogrightarea51131.3.yI7e9d

  10. 【ActiveMQ】管理界面查看消息详情,报错/WEB-INF/tags/form/forEachMapEntry.tag PWC6199: Generated servlet error: The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

    ActiveMQ版本:5.12 JDK版本:1.8 ===================== 使用ActiveMQ过程中,在管理界面查看消息详情,发现报错: 查看日志信息,报错如下: 2017-11 ...