LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1453|回复: 10

QT编程问题(显示BMP图)

[复制链接]
发表于 2004-7-28 10:34:55 | 显示全部楼层 |阅读模式
编译环境是VC

在头文件中的声名
    QVBox *vb;
    QScrollView* sv;
我用如下方法在窗口中建一个QScrollView框sv
  sv = new QScrollView(this);//建QScrollView框sv
  vb = new QVBox( sv->viewport() );//建QVBox类vb并设定Viewport
  sv->addChild(vb);
  setCentralWidget( sv );//让sv充满窗口
之后在程序中用如下方法在vb中加载BMP图
void Main:penfile()
{
    QString fn = QFileDialog::getOpenFileName( QString::null, tr( "BMP-Files (*.bmp *.bmp);;All Files (*)" ), this );
  if ( !fn.isEmpty() )
  {
     logoimage.load(fn, 0);
     vb->resize(logoimage.width(),logoimage.height());
  }
}
可是,当我拖动QScrollView的滚动条时,QVBox中的BMP图就被QScrollView的边框给擦掉了,
我知道是重绘的问题,但是如何作呢?
求QT高手指点
多谢?
 楼主| 发表于 2004-7-28 11:14:01 | 显示全部楼层
void Main::Openfile()
这行怎么变成笑脸了?
发表于 2004-7-28 12:21:22 | 显示全部楼层
贴代码要用code格式,你先看看置顶帖如何说的!

不然冒号加O就变成笑脸。
 楼主| 发表于 2004-7-28 14:29:46 | 显示全部楼层
我是在paintEvent(QPaintEvent*)中重绘的,不行啊,只有窗口大小改变时BMP才重绘,拖动QScrollView的滚动条时,BMP图并不重绘啊!

void Main::paintEvent(QPaintEvent*)
{
  QPainter paint(vb);
  if(loadit=5)
  {
bitBlt( vb, 0, 0,   // copy pixmap to widget
     &logoimage, 0, 0, -1, -1 );
   
  }
  //repaint();//一加这句,程序一运行就退出

}
发表于 2004-7-28 19:30:29 | 显示全部楼层
why not use QLabel to display your image?
 楼主| 发表于 2004-7-28 21:30:03 | 显示全部楼层
我是QT新手啊!
用QLabel显示BMP图它会自己重绘吗?
求高手指点
 楼主| 发表于 2004-7-28 21:35:29 | 显示全部楼层
liuspider:
QLabel如何显示BMP图啊?我是新手。。。。。
发表于 2004-7-29 01:11:10 | 显示全部楼层
why not run assistant and skim over the document for QLabel?
发表于 2004-7-29 07:56:25 | 显示全部楼层
windows版的qt去哪里下载的?
 楼主| 发表于 2004-7-30 21:11:43 | 显示全部楼层
还是不会啊!我太笨啦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表