读书频道 > 系统 > linux > Linux环境下Qt4图形界面与MySQL编程
3.8.5 示例20:GraphicsView的应用
2012-11-05 15:41:48     我来说两句 
收藏    我要投稿   
在Linux操作系统环境下,图形界面与数据库编程技术越来越受到广泛重视。本书以图形界面编程控件与数据库编程基础→简单易学的实例→实际工程项目开发与场景分析为写作主线,以当前最新的Qt4.7为依据,采...  立即去当当网订购

本示例通过用GraphicsView显示图片文件,简单地介绍了Graphics View、Graphics Scene和QGraphicsItem之间的关系。

首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除,界面设计结果如图3-90所示。



 

1.控件说明

在属性编辑窗口中对控件的属性进行修改,修改内容如表3-25所示。


 

2.示例说明

界面布局设置好之后,添加资源文件,把图片文件1.jpg添加到资源文件中。添加资源文件的方法在示例3中已经详细介绍过了,这里就不再重复介绍。

?程序执行后,自动加载图片1.jpg,不要把程序最大化,使边框出现滚动条,可以通过鼠标在一定空间内拖动图片1.jpg;

?单击菜单栏选择“Open”选项,可以打开其他图片;

?单击菜单栏选择“Exit”选项,退出程序。

3.示例实现

头文件mainwindow.h(文中的粗体为需要添加的内容):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QGraphicsScene>
#include <QGraphicsView>
namespace Ui {
 class MainWindow;
}
class MainWindow : public QMainWindow
{
 Q_OBJECT
public:
 explicit MainWindow(QWidget *parent = 0);
 ~MainWindow();
 QString pictureName;          //当前显示的图片
 QGraphicsScene *scene;//声明scene
 QGraphicsPixmapItem *item;//声明item
private:
 Ui::MainWindow *ui;
private slots://声明槽函数
 void slotOpen();
 void slotExit();
};
#endif // MAINWINDOW_H

在主窗体mainwindow.cpp文件中自动生成如下代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
{
 ui->setupUi(this);
}
MainWindow::~MainWindow()
{
 delete ui;
}

在主窗体mainwindow.cpp文件中添加的头文件:
#include <QFileDialog>

在主窗体mainwindow.cpp文件中构造函数:
MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
{
 ui->setupUi(this);

 /****************界面初始化********************************/
 this->pictureName = ":/1.jpg";
 scene = new QGraphicsScene;
 scene->setSceneRect(-300,-300,600,600);
 scene->setItemIndexMethod(QGraphicsScene::NoIndex);
 QPixmap pixmap(this->pictureName);
 pixmap = pixmap.scaledToWidth(200);
 item = scene->addPixmap(pixmap);

 /***************设置view的场景*****************************/
 ui->view->setScene(scene);
 ui->view->setRenderHint(QPainter::Antialiasing);
 ui->view->setCacheMode(QGraphicsView::CacheBackground);
 ui->view->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
 ui->view->setDragMode(QGraphicsView::ScrollHandDrag);
 ui->view->resize(400,300);

 /***************信号和槽函数的映射**************************/
 connect(ui->actionOpen,SIGNAL(triggered()),this,SLOT(slotOpen()));
 connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(slotExit()));
}

在主窗体mainwindow.cpp文件中添加QAction actionOpen的槽函数:
/*****************定义槽函数,打开图片**************************/
void MainWindow::slotOpen()
{
 this->pictureName = QFileDialog::getOpenFileName(this);  //打开文件对话框
 if(!this->pictureName.isEmpty())
 {
  QPixmap pixmap(this->pictureName);
  pixmap = pixmap.scaledToWidth(200);
  item = scene->addPixmap(pixmap);
  ui->view->setScene(scene);//设置view的场景
 }
}

在主窗体mainwindow.cpp文件中添加QAction actionExit的槽函数:
/******************定义槽函数,退出程序**************************/
void MainWindow::slotExit()
{
 this->close();
}

4.示例执行结果

示例执行结果如图3-91所示。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.8.4 GraphicsView控件
下一篇:3.8.6 Calendar控件
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站