QT问题集锦-从学习Qt遇到的各种问题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
QString.toStdString().c_str();
4 int double char* --->string
可以采用<sstream>里的stringstream
以int为例,int a = 3;
stringstream ss;
string strInt;
ss<<a;
ss>>strInt;
第三篇
11.
QwtPlotCanvas*canvas=newQwtPlotCanvas();
把new后面的括号去掉即可
5.1
1 char *与const char *的转换
char *ch1="hello11";
const char *ch2="hello22";
ch2 = ch1;//不报错,但有警告
1>Active:获得焦点的状态。
2>Inactive:未获得焦点的状态。
3>Disable:不可用状态。
通常情况下,Active状态与Inactive状态下颜色显示是一致的,当然也可根据需要设置成不一样的颜色
2、ColorRole(设置什么颜色)。
ColorRole指的是颜色主题,即对窗体中不同部位颜色的分类,如QPalette::Window是指背景色,QPalette::WindowText指的是前景色等。
}
Globe.cpp
Globe::Globe()
{
}
Int Globe::num = 0;
9
double/float size = 2.3334524;
QString str = QString::number(size, 'f', 2);
其中f代表非科学计数法格式,2代表小数点后两位。
10
未连接QWT库need to link to the Qwt library.
常用:
QPalete::Window,通常指窗口部件的背景色;
QPalette:WindowText,通常指窗口不见的前景色(QLabel也可以使用);
QPalette::Base,指文本输入窗口部件(比如QTextEdit,QLinedit,QPlainTextEdit等)的背景色
QPalette::Text,与QPalette::Base一块使用,指文本输入窗口部件的前景色;
char a='b';
QString str;
str=QString(a);
12 QString转换为char
方法也用很多中
QString str="abc";
char *ch;
ch = str.toLatin1.data();
13 QByteArray转换为char *
char *ch;//不要定义成ch[n];
qDebug()<<tr("print");
qDebug()<<ch;(ch为char类型)
qDebug()<<tr(ch);
qDebug()<<byteArray;(byteArray是QByteArray类型)
qDebug()<<tr(byteArray);
qDebug()<<str;(str为Qstring类型)
1)Qt SDK自带头文件
2)系统头文件
3)第三方头文件
3
原因分析:在.pro中未加入: QT += xml
4
描述:把dll文件和对应的.h文件拷贝到项目文件目录,添加.h文件到项目,引用dll函数时,出现无法解析的外部符号错误
分析:未将.lib库文件添加到项目中。
5
指针是指向地址的变量,buffer = temp.data仅仅是把参数buffer指向了temp.data的地址。而指针参数的目的是指向调用该函数时的数组地址,这里把指针指向了其他,则丢失了原有的数组,因为未能复制给数组。
原因分析:引用的头文件只是变量及函数的定义说明,而函数实现部分都封装在对应的库中(lib+dll)
2
描述:Qt项目中添加的头文件一般是根据需求自己写的,而项目中需要引用大量的Qt自带头文件及系统头文件,有时也需要用到第三方专用头文件,不可能把所有的头文件都加到项目中。那该如何引用这些已有的头文件呢?这里分三类进行讨论:
原因分析:未知
解决方法:
1安装VS2010SP1,未解决
2安装VS-Add,未解决
3使用Creator2.6解决
2
问题描述:见下图
原因分析:
1)可能:添加VS编译器环境变量,在PATH中添加VS中NMAKE路径
2)确定:Creator或编译器无法识别&符号,即路径原文件名为R&T中含有非法字符,无法准确识别路径
其他两个一样。
5 int double char*转QString
一种方法可以先转string,再转QString。
另一种方法可以查看QString类的函数。
其一:静态函数QString number ( double n, char format = 'g', int precision = 6 )
ch1 = (char *)ch2;
2 char转换为QString
其实方法有很多中,我用的是:
char a='b';
QString str;
str=QString(a);
3 QString转换为char
方法也用很多中
QString str="abc";
char *ch;
ch = str.toLatin1.data();
2)修改槽动作名称或重新生成槽动作,把之前代码拷贝到新槽动作中。
10 Qt
1)int转QString
int a=10;
QString b;
b=QString::number(a)
2)QString转int
QString a="120"
int b;
b=a.toInt()
3)int和枚举型转换
11
答:相对路径是Qt Creator构建目录
2)添加资源文件,把背景图片放到资源文件中,再通过控件属性,指定资源文件中的背景图片即可。
7
原因分析:可能是昨天在windows、system32里面添加了qtcore.dll等文件导致
解决方法:删除之后就可以运行了,但具体删除哪个,待定
8
9
解决方法:修改名称后,通常有以下步骤
1)在头文件中删除对应槽;
4 QByteArray转换为char *
char *ch;//不要定义成ch[n];
QByteArray byte;
ch = byte.data();
5 char *转换为QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);
6 QString转换为QByteArray
QPalette::Button,指按钮窗口部件的背景色;
QPalette::ButtonText,指按钮窗口部件的前景色
QPalette::Highlight:用于设置文字高亮时的背景颜色
QPalette::HighlightedText:用于设置文字高亮时的颜色
byte = string.toAscii();
16 QByteArray转换为QString
QByteArray byte;
QString string;
string = QString(byte);
这里再对这俩中类型的输出总结一下:
qDebug()<<"print";
qDebug()<<tr("print");
qDebug()<<tr(str.toLatin1);
17 int转QString
int a=10;
QString b;
b=QString::number(a)
18 QString转int
QString a="120"
int b;
b=a.toInt()
--------------------------------------------------------------------
其二:非静态函数,需构造QString实例来调用的QString & setNum ( double n, char format = 'g', int precision = 6 )
QString::number()这个静态函数,参数可以是int,也可以是double。
6 double int的互转
但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:
qDebug()<<tr(str.toLatin1);
8 int转QString
int a=10;
QString b;
b=QString::number(a)
9 QString转int
QString a="120"
qDebug()<<ch;(ch为char类型)
qDebug()<<tr(ch);
qDebug()<<byteArray;(byteArray是QByteArray类型)
qDebug()<<tr(byteArray);
qDebug()<<str;(str为Qstring类型)
但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:
QByteArray byte;
ch = byte.data();
14 char *转换为QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);
15 QString转换为QByteArray
QByteArray byte;
QString string;
QByteArray byte;
QString string;
byte = string.toAscii();
7 QByteArray转换为QString
QByteArray byte;
QString string;
string = QString(byte);
这里再对这Biblioteka Baidu中类型的输出总结一下:
qDebug()<<"print";
int b;
b=a.toInt()
10 char *与const char *的转换
char *ch1="hello11";
const char *ch2="hello22";
ch2 = ch1;//不报错,但有警告
ch1 = (char *)ch2;
11 char转换为QString
其实方法有很多中,我用的是:
第一篇
1
问题描述:运行环境为Qt4.8.5+QtCreator3.0.0+VS2010专业版+Debuging Tools for Windows(x86),用Creator无法打开项目文件,截图如下:
弹出错误:Cannot read E:/PROJECT/Zhou-0410/testToolbar.pro:UnexpectedUTF-8 BOM
1 QString --> string
QString.toStdString();
2 string --> QString
QString::fromStdString(string)
3 QString --->int,double,char *
QString::toInt()
QString::toDouble()
12 Qt4
ui->label->setText(QObject::trUtf8("尼玛"));
13 Qt
答:qcreator是用VS编译的,而QWT的DLL是用mgw编译的,所以qtreator无法显示出对应控件。
14
15
16
修改如下属性:minimumsize
第二篇
1
问题描述:被引用的函数无法解析
3)默认的环境变量已经有了NMAKE路径
解决方法:把路径中非法字符删除即可
3
原因分析:未知,应该是非法字符导致。
4
原因分析:声明的函数,未实现,或在未实现它的情况下调用了它
解决方法:实现后再调用
5
问题描述:见图
解决方法:转换成utf8格式
6
问题描述:按照相对路径添加背景图片不显示
解决方法:
1)相对路径起始点为构建目录,如图
可采用static_cast
5.2
1)结构体转字符数组
structA
{
inta;
intb;
};
charbuf[100];
A a= {1,2};
memcpy(buf,&a,sizeof(A));
2)字符数组转结构体
5.3
QPalette类有两个枚举类型,
枚举
1、ColorGroup
CorGroup指的是3中不同的状态(什么时候设置颜色):
5
问题描述:no matching function for call to……connect……
问题解析:我遇到过这种问题,应该是你&mDevice对应的类,没有继承QObject对象。Qt的信号-槽机制必须以QObject为基类才能使用。
6
参见QWT
7
8
Globe.h
Class globe
{
Static int num;
相关文档
最新文档