C++ GUI Qt 编程(第二版)第8章 Diagram_2(实现主对话框)
2011-01-08 13:51
841 查看
现在要加上餐单和浮动对话框的快捷菜单,首先把你要用到的图标放到一个文件夹里面,后单击FileandClass选项中QT选项在你的右侧选择QtResourcefile按照提示就可以。不会的参考以前章节的文章。
main.cpp的源代码始终不变,现在我们要在上一次的代码中添加一写代码(蓝色)
Diagramwindow.h的源代码为:
#ifndefDIAGRAM_H
voidcreateActions();
Diagramwindow.cpp的源代码为:
#include<QtGui>
createActions();
voidDiagram::createActions()
main.cpp的源代码始终不变,现在我们要在上一次的代码中添加一写代码(蓝色)
Diagramwindow.h的源代码为:
#ifndefDIAGRAM_H
#defineDIAGRAM_H
#include<QMainWindow>
classQAction;
classQGraphicsItem;
classQGraphicsScene;
classQGraphicsView;
classDiagram:publicQMainWindow
{
Q_OBJECT
public:
Diagram();
private:
voidcreateActions();
voidcreateMenus();
voidcreateToolBars();
QMenu*fileMenu;
QMenu*editMenu;
QToolBar*editToolBar;
QAction*exitAction;
QAction*addNodeAction;
QAction*addLinkAction;
QAction*deleteAction;
QAction*cutAction;
QAction*copyAction;
QAction*pasteAction;
QAction*bringToFrontAction;
QAction*sendToBackAction;
QAction*propertiesAction;
QGraphicsScene*scene;
QGraphicsView*view;
};
#endif//DIAGRAM_H
Diagramwindow.cpp的源代码为:
#include<QtGui>
#include"Diagram.h"
Diagram::Diagram()
{
scene=newQGraphicsScene(0,0,600,500);newascene
view=newQGraphicsView;newaview
view->setScene(scene);setthevsceneintheview
view->setDragMode(QGraphicsView::RubberBandDrag);settheviewmode
view->setRenderHints(QPainter::Antialiasing
|QPainter::TextAntialiasing);
view->setContextMenuPolicy(Qt::ActionsContextMenu);
setCentralWidget(view);
createActions();
createMenus();
createToolBars();
}
voidDiagram::createActions()
{
exitAction=newQAction(tr("E&xit"),this);
exitAction->setShortcut(tr("Ctrl+Q"));
connect(exitAction,SIGNAL(triggered()),this,SLOT(close()));
addNodeAction=newQAction(tr("Add&Node"),this);
addNodeAction->setIcon(QIcon(":/images/node.png"));
addNodeAction->setShortcut(tr("Ctrl+N"));
connect(addNodeAction,SIGNAL(triggered()),this,SLOT(addNode()));
addLinkAction=newQAction(tr("Add&Link"),this);
addLinkAction->setIcon(QIcon(":/images/link.png"));
addLinkAction->setShortcut(tr("Ctrl+L"));
connect(addLinkAction,SIGNAL(triggered()),this,SLOT(addLink()));
deleteAction=newQAction(tr("&Delete"),this);
deleteAction->setIcon(QIcon(":/images/delete.png"));
deleteAction->setShortcut(tr("Del"));
connect(deleteAction,SIGNAL(triggered()),this,SLOT(del()));
cutAction=newQAction(tr("Cu&t"),this);
cutAction->setIcon(QIcon(":/images/cut.png"));
cutAction->setShortcut(tr("Ctrl+X"));
connect(cutAction,SIGNAL(triggered()),this,SLOT(cut()));
copyAction=newQAction(tr("&Copy"),this);
copyAction->setIcon(QIcon(":/images/copy.png"));
copyAction->setShortcut(tr("Ctrl+C"));
connect(copyAction,SIGNAL(triggered()),this,SLOT(copy()));
pasteAction=newQAction(tr("&Paste"),this);
pasteAction->setIcon(QIcon(":/images/paste.png"));
pasteAction->setShortcut(tr("Ctrl+V"));
connect(pasteAction,SIGNAL(triggered()),this,SLOT(paste()));
bringToFrontAction=newQAction(tr("Bringto&Front"),this);
bringToFrontAction->setIcon(QIcon(":/images/bringtofront.png"));
connect(bringToFrontAction,SIGNAL(triggered()),
this,SLOT(bringToFront()));
sendToBackAction=newQAction(tr("&SendtoBack"),this);
sendToBackAction->setIcon(QIcon(":/images/sendtoback.png"));
connect(sendToBackAction,SIGNAL(triggered()),
this,SLOT(sendToBack()));
propertiesAction=newQAction(tr("P&roperties..."),this);
connect(propertiesAction,SIGNAL(triggered()),
this,SLOT(properties()));
}
voidDiagram::createMenus()
{
fileMenu=menuBar()->addMenu(tr("&File"));
fileMenu->addAction(exitAction);
editMenu=menuBar()->addMenu(tr("&Edit"));
editMenu->addAction(addNodeAction);
editMenu->addAction(addLinkAction);
editMenu->addAction(deleteAction);
editMenu->addSeparator();
editMenu->addAction(cutAction);
editMenu->addAction(copyAction);
editMenu->addAction(pasteAction);
editMenu->addSeparator();
editMenu->addAction(bringToFrontAction);
editMenu->addAction(sendToBackAction);
editMenu->addSeparator();
editMenu->addAction(propertiesAction);
}
voidDiagram::createToolBars()
{
editToolBar=addToolBar(tr("Edit"));
editToolBar->addAction(addNodeAction);
editToolBar->addAction(addLinkAction);
editToolBar->addAction(deleteAction);
editToolBar->addSeparator();
editToolBar->addAction(cutAction);
editToolBar->addAction(copyAction);
editToolBar->addAction(pasteAction);
editToolBar->addSeparator();
editToolBar->addAction(bringToFrontAction);
editToolBar->addAction(sendToBackAction);
}
现在编译就可以发现我的主程序有点结果比较丰满了点结果如下:
相关文章推荐
- C++ GUI Qt 编程(第二版)第8章 Diagram_1(实现主对话框)
- C++ GUI Qt 编程(第二版)第8章 Diagram_1(实现主对话框)
- C++ GUI QT 编程(第二版) -第2章 (sort)对话框
- C++ GUI QT 编程(第二版) -第4章 实现功能源码简介_1
- C++ GUI QT 编程(第二版) -第3章 (创建对话框)_1
- C++ GUI QT 编程(第二版) -第3章 (创建对话框)_2
- C++ GUI Qt 4编程(第二版) 源代码在qt5打开方法
- 读书笔记 - C++ GUI Qt4 编程(第二版)- Qt 父子对象机制的内存管理
- C++ GUI Qt 4 编程(第二版)
- 《C++ GUI Qt4 编程(第二版)》――读书心得
- C++ GUI Qt 4编程(第二版)
- C++ GUI QT 第4版 第一章 创建对话框
- 《C++ GUI Qt 4 编程》 笔记(七)
- Python Qt GUI快速编程-第四章的计算器python3+pytq5+Qt Designer实现
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局
- 《C++ GUI Qt 4 编程》 笔记(一)
- 在C++ GUI Qt中使用QCA进行安全性编程之一
- 在C++ GUI Qt中使用QCA进行安全性编程之二
- 黑白棋算法简单实现与基于Qt的GUI编程的综合应用
- C++ GUI Programming with Qt 4 - 10.3 实现自定义模型