• 6939阅读
  • 12回复

[提问]别人运行正常的文件为什么到我这里就出错呢(已解决) [复制链接]

上一主题 下一主题
离线tilseam
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-13
本人小白,求各位指点一下检查一下代码:

mainwindow.h
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. namespace Ui {
  5.     class MainWindow;
  6. }
  7. class MainWindow : public QMainWindow
  8. {
  9.     Q_OBJECT
  10. public:
  11.     explicit MainWindow(QWidget *parent = 0);
  12.     ~MainWindow();
  13. private:
  14.     Ui::MainWindow *ui;
  15. };
  16. #endif // MAINWINDOW_H

main.cpp
  1. #include <QApplication>
  2. #include <QWidget>
  3. #include <QPainter>
  4. #include <QBitmap>
  5. class PainterWidget : public QWidget {
  6. protected:
  7.     void paintEvent(QPaintEvent*);
  8. };
  9. void PainterWidget::paintEvent(QPaintEvent *event) {
  10. 一个数组略
  11.     QPainter painter(this);
  12.     QImage image(200, 152, QImage::Format_RGB888);
  13.     QRgb value;
  14.     int i,j;
  15.     for(i=0;i<200;i++)
  16. {    for(j=0;j<152;j++)
  17. {
  18.     value = qRgb((int)(*(array+152*i+j)),(int)(*(array+152*i+j)), (int)(*(array+152*i+j)));
  19.     image.setPixel(i, j, value);
  20. }}
  21.     painter.drawImage(0,0,image);
  22. }
  23. int main(int argc, char *argv[]) {
  24.     QApplication app(argc, argv);
  25.     PainterWidget pWidget;
  26.     pWidget.setWindowTitle("Finger image");
  27.     pWidget.resize(400, 300);
  28.     pWidget.show();
  29.     return app.exec();
  30. }


先谢谢各位大大
离线tilseam

只看该作者 1楼 发表于: 2012-05-13
编译出错:
  1. debug/moc_mainwindow.o:moc_mainwindow.cpp:(.rdata$_ZTV10MainWindow[vtable for MainWindow]+0x14): undefined reference to `MainWindow::~MainWindow()'
  2. debug/moc_mainwindow.o:moc_mainwindow.cpp:(.rdata$_ZTV10MainWindow[vtable for MainWindow]+0x18): undefined reference to `MainWindow::~MainWindow()'
  3. debug/moc_mainwindow.o:moc_mainwindow.cpp:(.rdata$_ZTV10MainWindow[vtable for MainWindow]+0xf4): undefined reference to `non-virtual thunk to MainWindow::~MainWindow()'
  4. debug/moc_mainwindow.o:moc_mainwindow.cpp:(.rdata$_ZTV10MainWindow[vtable for MainWindow]+0xf8): undefined reference to `non-virtual thunk to MainWindow::~MainWindow()'
  5. collect2: ld returned 1 exit status
  6. mingw32-make.exe[1]: *** [debug\122.exe] Error 1
  7. mingw32-make.exe: *** [debug] Error 2

离线jdwx

只看该作者 2楼 发表于: 2012-05-13
回 1楼(tilseam) 的帖子
1:先把main函数分出去,单独一个文件。
2:void PainterWidget::paintEvent(QPaintEvent *event) {这个函数肯定有问题,{}大括号匹配问题。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线tilseam

只看该作者 3楼 发表于: 2012-05-13
Re:回 1楼(tilseam) 的帖子
引用第2楼jdwx于2012-05-13 20:07发表的 回 1楼(tilseam) 的帖子 :
1:先把main函数分出去,单独一个文件。
2:void PainterWidget::paintEvent(QPaintEvent *event) {这个函数肯定有问题,{}大括号匹配问题。


括号是我疏忽了,那是数组的大括号,主要问题应该不是这里吧,还是先谢谢你
离线roywillow

只看该作者 4楼 发表于: 2012-05-13
回 3楼(tilseam) 的帖子
我觉得你那个main.cpp这么写肯定不妥
至少moc执行的时候似乎根本就不会管cpp文件
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线tilseam

只看该作者 5楼 发表于: 2012-05-13
回 4楼(roywillow) 的帖子
小白求教一下怎么写才对
离线roywillow

只看该作者 6楼 发表于: 2012-05-13
回 5楼(tilseam) 的帖子
怎么说呢……
您还是老老实实按照常理出牌吧……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线tilseam

只看该作者 7楼 发表于: 2012-05-13
回 6楼(roywillow) 的帖子
http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/QPainter.html

这个案例的写法和我的写法几乎一样啊
离线roywillow

只看该作者 8楼 发表于: 2012-05-13
回 7楼(tilseam) 的帖子
你的MainWindow只声明没定义?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线tilseam

只看该作者 9楼 发表于: 2012-05-13
回 8楼(roywillow) 的帖子
我觉得问题就出在这里,但那边执行是正常的...
你可以提供一个解决思路吗?
离线roywillow

只看该作者 10楼 发表于: 2012-05-13
回 9楼(tilseam) 的帖子
所以说你先定义了再试试啊……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线0xffffh

只看该作者 11楼 发表于: 2012-05-13
Hi,
你的这个程序的问题在声明了构造函数和析构函数但是没有实现
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
改成下面的:
explicit MainWindow(QWidget *parent = 0){}
~MainWindow(){}
就可以通过编译。
但是你这个程序中MainWindow类定义实现了,根本就没有用啊:
PainterWidget : public QWidget
离线tilseam

只看该作者 12楼 发表于: 2012-05-13
11楼的方法是可行的,我终于执行了,不过我也清楚没有根本解决问题

十分感谢以上各位,我明天和发给我的人好好探讨一下
快速回复
限100 字节
 
上一个 下一个