编译或运行时出现的错误及解决

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
collect2: ld 返回 1
make: *** [cy2_dzcd] 错误 1
解决:
cpp文件里,看看是不是在定义的时候函数名前面忘记写类名了,
QPixmap getMonoPixmap(QPixmap pix)
改成:
QPixmap CCommFunctions::getMonoPixmap(QPixmap pix)
{
Q_OBJECT
public:
DOrderDishesPage(QWidget *parent, const char *name);
……
};
错误:‘QWidget’ 是 ‘DOrderDishesPage’ 不可访问的基类
解决:在类声明的父类前加上public。
应写成:
qDebug("typeid=%s", typeID.ascii());
3. 编译时出错:变量×××有初始值设定,但是类型不完全
ccommfunctions.cpp:17: 错误:变量 ‘QImage qimage’ 有初始值设定,但是类型不完全
则错误提示消失。
所以,在这种情况下,先不指定父,再用语句定义的时候就不会出现错误提示了。
13. 构造函数是私有的
错误:‘DOrderDishesPage::DOrderDishesPage(QWidget*, const char*)’ 是私有的
解决:在未指定函数或变量的属性的时候,默认是私有的,所以在.h文件的构造函数声明前加上public:
解决:
出现上面的错误是因为定义类对象的时候没有用指针:
CDishTypePage dishTypePage = new CDishTypePage(this, "dishTypePage");
应改成:
CDishTypePage *dishTypePage = new CDishTypePage(this, "dishTypePage");
QVBoxLayout *vBox = new QVBoxLayout(this);
grid->addLayout(vBox, 0, 1);
当两个QLayout对象的定义的父都指定this的时候,会出现如下错误提示:
QLayout "unnamed" added to BDishItem "0118", which already has a layout
解决:
改成:m_qivDishIconView->setPaletteBackgroundColor(QColor(77, 00, 113));
8. 未引用头文件的错误
dmenupage.cpp:95: 错误:invalid use of undefined type ‘struct QObjectList’
make: *** [ccommfunctions.o] 错误 1
解决:
把#include <qimage.h>加在.h文件里就好了
4. 在头文件里定义常量的错误:ISO C++ 不允许成员 ‘M_ICON_WIDTH’ 的初始化
一定要static和const一起使用,否则提示错误:
const int M_ICON_WIDTH = 100;
class DOrderDishesPage : public QWidget
15. <unresolved overloaded function type>[int]’ 用作数组下标类型无效
将第二行改成:
QVBoxLayout *vBox = new QVBoxLayout(grid);
会出现如下错误提示:
QLayout::addChildLayout: layout already has a parent
再将第二行改成:
QVBoxLayout *vBox = new QVBoxLayout(0);
page.h:25: 错误:ISO C++ 不允许声明无类型的 ‘QButtonGroup’
解决方法同上。
9. 每次修改、保存源文件之后,再make工程都会出现找不到类定义或是其它奇快问题
可能是有些外部新生成的类文件没有引到QT Designer里:如从cvs上新下载下来,或是编译器自动生成的。
解答:实际上那是一个QWidget对象,在程序中会用到它的一些函数。若不希望它显示出来,可以用widget->setHidden(true);使它隐藏。
11.“重复定义”系统生成的类或是函数
qmake_image_collection.o: In function `qCleanupImages_dianke_dcq()':
cmainformboard.cpp:14: 附注:在这里第一次需要生成的方法 ‘CDishTypePage::CDishTypePage(const CDishTypePage&)’
cmainformboard.cpp:14: 错误: initializing temporary from result of ‘CDishTypePage::CDishTypePage(QWidget*, const char*)’
ddishpage.h:30: 错误:ISO C++ 不允许成员 ‘M_ICON_WIDTH’ 的初始化
ddishpage.h:30: 错误:使 ‘M_ICON_WIDTH’ 成为静态的
应该写成:
static const int M_ICON_WIDTH = 100;
5. 指针对象使用成员函数时的错误:
/usr/lib/qt-3.3/include/qwidget.h:738: 错误:‘QWidget::QWidget(const QWidget&)’ 是私有的
cdishtypepage.h:10: 错误:在此上下文中
cmainformboard.cpp: In constructor ‘CMainFormBoard::CMainFormBoard(QWidget*, const char*)’:
qmake_image_collection.o:/home/wj/dianke_dcq/qmake_image_collection.cpp:14234: first defined here
解决:步骤如下:
(1) 关闭Qt Designer
(2) 清除所有生成文件,再重新生成一次.pro文件
/usr/lib/qt-3.3/include/qobjectdefs.h:161: 错误:forward declaration of ‘struct QObjectList’
解决:
在文件开头引入头文件:#include <qobjectlist.h>
如果是在头文件里缺少引入,则会提示:
public:
DOrderDishesPage(QWidget *parent, const char *name);
14. ‘QWidget’ 是 ‘DOrderDishesPage’ 不可访问的基类
类的声明如下:
class DOrderDishesPage : QWidget
2. 运行时出现下面的错误:
浮点数例外 多半是因为出现除0现象
段错误 多半是因为使用了空指针,如对象还未初始化就调用了它的成员函数
非法指令 原因应该很多,我遇到的目前只有一种情况:qDebug输出QString对象之前未转换,如下:
qDebug("typeid=%s", typeID);
7. 设置背景色的错误
语句:
m_qivDishIconView->setPaletteBackgroundColor(new QColor(77, 00, 113));
错误:
ddishpage.cpp:38: 错误:从类型 ‘QColor*’ 到类型 ‘QRgb’ 的转换无效
ddishpage.cpp:38: 错误: 初始化实参 1,属于 ‘QColor::QColor(QRgb, uint)’
ccommfunctions.cpp:18: 错误:嵌套名指定中使用了不完全的类型 ‘QImage’
ccommfunctions.cpp: At global scope:
ccommfunctions.cpp:14: 警告:‘QPixmap getFretchPixmap(int, int, const char*)’ 定义后未使用
/usr/lib/qt-3.3/include/qglist.h:150: multiple definition of `qCleanupImages_dianke_dcq()'
qmake_image_collection.o:/usr/lib/qt-3.3/include/qglist.h:150: first defined here
qmake_image_collection.o: In function `qInitImages_dianke_dcq()':
/home/wj/dianke_dcq/qmake_image_collection.cpp:14234: multiple definition of `qInitImages_dianke_dcq()'
解决:
其实原因很简单:定义了QLineEdit的指针对象,而使用“.”来调用成员函数:
QLineEdit *le = new QLineEdit(this);
le.setText("");
改成:le->setText("");就好了
6. 找不到类的成员函数
/home/wj/cy2_dzcd/bpixmapbuttonbase.cpp:20: undefined reference to `CCommFunctions::getMonoPixmap(QPixmap)'
这时,关闭工程,重新打开,就会解决问题。
所以,每次启动QT Designer之前,现在工程目录下cvs update + make一下是一个好的习惯。
10. widget显示的问题
一个Dialog窗口,只要定义一个widget对象就会在左上角出现一个类似label的区域,与底层同样式的时候不易看出来,给底层加个背景图就看出来了。
对成员‘setText’的请求出现在‘((DPasswordForm*)this)->DPasswordForm::m_editPassword’中,而后者具有非类类型‘QLineEdit*’
对成员‘text’的请求出现在‘((DPasswordForm*)this)->DPasswordForm::m_editPassword’中,而后者具有非类类型‘QLineEdit*’
ccommfunctions.cpp:17: 错误:invalid use of undefined type ‘struct QImage’
/usr/lib/qt-3.3/include/qwindowdefs.h:74: 错误:forward declaration of ‘struct QImage’
这里的很多错误都是很小的错误,有的甚至低级,但是当它发生的时候总是会搞得你一头雾水,花半天时间也不知道到底那里错了。L
所有代码都是在qt3.3.8+fedora8下运行的。
1. 编译时出错:构造函数××ד是私有的”
/usr/lib/qt-3.3/include/qwidget.h: In copy constructor ‘CDishTypePage::CDishTypePage(const CDishTypePage&)’:
make clean
qmake -project
qmake
make
(3) 启动Qt Designer
12பைடு நூலகம் QLayout父子关系的问题
这个错误只是在运行的时候发出提示,并不会对运行造成影响,但有错误提示总是不好的。
源码如下:
QGridLayout *grid = new QGridLayout(this, 2, 2, M_MARGIN);
相关文档
最新文档