qt显示图片?

如此美丽的你 2012-04-10 09:42:25

#include<QtGui/QtGui>
class Pic:public QWidget
{
Q_OBJECT
public:
Pic(QWidget *parent=0);
};
Pic::Pic(QWidget *parent):QWidget(parent)
{
resize(600,800);
QPicture picture;
picture.load("mm.jpg");
QPainter painter(this);
painter.drawPicture(0,0,picture);
}
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
Pic pic;
pic.show();
return a.exec();
}

错误信息:
main.o: In function `Pic::Pic(QWidget*)':
main.cpp:(.text+0x30): undefined reference to `vtable for Pic'
main.cpp:(.text+0x37): undefined reference to `vtable for Pic'
main.o: In function `main':
main.cpp:(.text.startup+0x5f): undefined reference to `vtable for Pic'
main.cpp:(.text.startup+0x67): undefined reference to `vtable for Pic'
main.cpp:(.text.startup+0xa2): undefined reference to `vtable for Pic'
main.o:main.cpp:(.text.startup+0xaa): more undefined references to `vtable for Pic' follow
collect2: ld 返回 1
make: *** [_5_picture] 错误 1
...全文
424 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
如此美丽的你 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

void Pic::paintEvent()
[/Quote]
使用了还是不能显示,再帮我看看?
pic.h

#ifndef _PIC_
#define _PIC_
#include<QtGui/QtGui>
class Pic:public QWidget
{
Q_OBJECT
public:
Pic(QWidget *parent=0);
virtual void paintEvent();
};
#endif

pic.cpp

#include<QtGui/QtGui>
#include"pic.h"
Pic::Pic(QWidget *parent):QWidget(parent)
{
resize(600,600);
paintEvent();
}
void Pic::paintEvent()
{

QPicture picture;
picture.load(tr("mm.bmp"));
QPainter painter(this);
painter.drawPicture(0,0,picture);
}

main.cpp

#include<QtGui>
#include"pic.h"
#include"pic.cpp"
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
Pic pic;
pic.show();
return a.exec();
}
dext 2012-04-11
  • 打赏
  • 举报
回复

QPainter painter(this);
painter.drawPicture(0,0,picture);


应该写在 paintEvent 里
如此美丽的你 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 10 楼 的回复:

C/C++ code

protected:
void paintEvent(QPaintEvent * event);//这个的实参传入什么,没有QPaintEvent *的指针啊?

这个虚函数是界面需要重画时被系统调用的,参数是由系统传过来。
[/Quote]
那你的意思是说不用传入实参吗?
念茜 2012-04-11
  • 打赏
  • 举报
回复
void Pic::paintEvent()
jdwx 2012-04-11
  • 打赏
  • 举报
回复
就是说paintEvent是一个QWidget类的虚函数,要自己重写一个(也有叫覆盖的)
画图的代码必须在这个函数里。
如此美丽的你 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

C/C++ code

QPainter painter(this);
painter.drawPicture(0,0,picture);



应该写在 paintEvent 里
[/Quote]
啥意思?细说一下啊帅哥!
jdwx 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

C/C++ code

protected:
void paintEvent(QPaintEvent * event);//这个的实参传入什么,没有QPaintEvent *的指针啊?
[/Quote]
这个虚函数是界面需要重画时被系统调用的,参数是由系统传过来。
如此美丽的你 2012-04-11
  • 打赏
  • 举报
回复
  
protected:
void paintEvent(QPaintEvent * event);//这个的实参传入什么,没有QPaintEvent *的指针啊?
jdwx 2012-04-11
  • 打赏
  • 举报
回复
#ifndef _PIC_
#define _PIC_
#include<QtGui/QtGui>
class Pic:public QWidget
{
Q_OBJECT
public:
Pic(QWidget *parent=0);
// virtual void paintEvent();
protected:
void paintEvent(QPaintEvent * event);

};
#endif
如此美丽的你 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

只要用到了Q_OBJECT宏,就要将一个类分成.h和.cpp两个文件。
[/Quote]
我把文件分成了.h和.cpp两个文件,但是为什么无法显示图片呢?
jdwx 2012-04-10
  • 打赏
  • 举报
回复
只要用到了Q_OBJECT宏,就要将一个类分成.h和.cpp两个文件。

mcadcj 2012-04-10
  • 打赏
  • 举报
回复
用qt creator的话在build里重新执行一下qmake就好了~
为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)
2022年11月4日-2022年11月14日购买当前课程赠送课程学习地址如下:https://edu.csdn.net/course/detail/32434https://edu.csdn.net/course/detail/35658https://edu.csdn.net/course/detail/30223https://edu.csdn.net/course/detail/32408https://edu.csdn.net/course/detail/32429注:因赠送课程不会出现在已订阅课程列表中,以下课程学习地址一定要收藏保存。#课程服务 在线答疑:本课程设有专门的讨论留言区,学习中遇到任何问题,直接给老师留言即可,老师都会及时进行回复。远程协助:如果遇到复杂问题,老师还可进行远程协助,这个一般可不是一两百元的课程就能享受到的。源码分享:为了让大家更好的进行项目实战,老师还将课程中涉及到的所有源码分享给学员,按照视频中的提示进行下载即可。在CSDN分享C++ Qt开发知识已经有6年了,感谢众多博友对我的支持,了解到很多人对Qt的使用还是有些困扰,例如Qt环境搭建,Qt布局的使用,如何使用Qt编写复杂的界面,如何自定义非标控件,Qt如何和Web交互,Qt和后台接口如何交互等;经过这几年的整理,我决定出这套《Qt高级开发视频教程》,带领大家学习Qt高级开发知识,学习如何使用Qt开发企业级别的项目;通过本课程的学习,大家将会达到企业招聘的中高级要求。为了照顾零基础学员,本课程第一章会介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。即使没有Qt开发的学习经验,也能跟着课程顺利学习。课程核心知识点地图如下: 课程每章核心知识点介绍如下: 第一章:介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。第二章:了解到很多学员对于Qt界面布局很不熟悉,将会详细介绍Qt设计器布局,以及如何C++代码手写布局,从常见的企业级项目入手,带领大家学会各种布局的实现,例如WPS、腾讯会议、优酷、迅雷等界面的实现;界面布局会了,这是企业项目开发的第一步,还有更重要的无边框窗口,如何设计一个合理的无边框窗口很重要,第三/四章:详细介绍如何实现一个无边框窗口,如何自定义标题栏,如何实现拖拽拉伸;第四章将会介绍如何自定义非标控件,优化Qt界面。第五章:介绍Qt web混合编程,一个商用项目,必然会涉及到web交互,这也是很多Qt开发者的弱项,这一章讲详细介绍C++ Qt web混合开发。第六章:既然是做企业级项目,必然需要和后台交互,http编程也是必要的,将详细介绍http编程,用户注册,登录,后台接口请求等知识;通过第五、六章的学习,将会是你的Qt开发技术更上一层楼。第七章:介绍Qt并发编程,耗时任务处理,进程调用等知识。第八、九章:讲解 Qt 比较重要的知识,图形视图结构,以及MVD模式;通过这两章的学习,大家会对图形视图有更好的了解。第十章:本章是独立章节,主要介绍Qt中一些特殊技巧,项目编译,dpi适配、多语言等知识。第十一章:是我们的企业级项目实战:实现一个视频会议客户端,本项目可以进行多人视频通话,直播,桌面分享等功能,本项目我会从零开始,进行项目搭建,功能调试,bug fixed, 带领大家做一个企业级项目。希望通过本课程的学习,大家的C++ Qt开发技术能有质的飞越,能找到自己心仪的工作。课程中如果讲的不对的地方,请大家指出,我及时修正,我也只是一个普通开发者,也不是所有的技术都会,尽我所能,把我所会的教给大家,让我们一起为Qt的发展,尽一份绵薄之力。 下面是本课程一些项目的截图: 1 可以滑动的设置界面         2 所有图形的绘制       3 视频播放器          4 高仿youku界面         5 视频会议         相信通过本课程的学习,大家有能力实现绝大部分客户端项目,从此用C++ Qt再也不会有难写的界面。

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧