您的位置:首页 > 编程语言 > C语言/C++

C++ GUI Qt 编程(第二版)第8章 Diagram_2(实现主对话框)

2011-01-08 13:51 841 查看
现在要加上餐单和浮动对话框的快捷菜单,首先把你要用到的图标放到一个文件夹里面,后单击FileandClass选项中QT选项在你的右侧选择QtResourcefile按照提示就可以。不会的参考以前章节的文章。

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);

}

现在编译就可以发现我的主程序有点结果比较丰满了点结果如下:







                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: