最近在做毕设 一个简单的点菜系统 今天出现了这样一个小问题
在程序中 用到了close()关闭窗口的命令 结果一运行 就出现停止响应的问题 现把程序发上来 请各位指导 谢谢
头文件
#ifndef INTERFACE_H
#define INTERFACE_H
#include"QGraphicsView"
#include"QGraphicsScene"
#include"QGraphicsItem"
#include "iconitem.h"
//#include "dialog.h"
//包含tablemodel例子头文件
class interface:public QGraphicsView
{
Q_OBJECT
public:
interface(QWidget *parent = 0);
void addItems(); //增加iconitem
void menuinfo();
void HelpInfo();
void tableinfo();
void booking();
void opentable();
void userinfo();
void print();
void calendar();
void close();
void debug();
void exit();
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
private:
QGraphicsScene *scene;
QStringList icon_name;
iconitem *image;
//Dialog *dish;
//Dialog *table;
//Dialog *user;
};
#endif // INTERFACE_H
源文件 #include "interface.h"
#include"QGraphicsPixmapItem"
#include"QMouseEvent"
#include"QGraphicsDropShadowEffect"
#include <QGraphicsItem>
interface::interface(QWidget *parent )
:QGraphicsView(parent)
{
//实例化GraphicsScene
this->scene=new QGraphicsScene(this);
scene->setSceneRect(0,0,636,476);
setGeometry(0,0,640,480);
setMinimumSize(640, 480);
setMaximumSize(640, 480);
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setScene(scene);
//在场景中加入item
this->addItems();
//在mainInterface-GraphicsView中加入scene。
this->setScene(this->scene);
}
void interface::addItems()
{
//增加背景图片item
QGraphicsPixmapItem *backimage=this->scene->addPixmap(QPixmap(":/images/002.jpg"));
backimage->setPos(0,0);
//初始化图片文本
QString str="Help#Calendar#Menu Info#Table Info#Booking#OpenTable#User#Print";
this->icon_name=str.split("#");
//增加向导图标iconitem
int imageCount=icon_name.count();
int imageOffset =160;
int leftMargin = 35;
int topMargin =50;
QFont font("Arial", 15, QFont::Bold);
for (int i = 0; i < imageCount; ++i) {
QGraphicsTextItem *label = new QGraphicsTextItem;
int columnOffset = -((i / 4) * 20);
int x = ((i % 4) * imageOffset) + leftMargin;
int y = ((i / 4) * imageOffset) + topMargin + columnOffset;
image = new iconitem(i,QPixmap(tr(":/images/%1.png").arg(i+1)));
image ->setPos(x, y);
scene->addItem(image);
//设置影子
QGraphicsDropShadowEffect *DropShadow = new QGraphicsDropShadowEffect(this);
DropShadow->setOffset(10,10);
image->setGraphicsEffect(DropShadow);
//设置透明度
QGraphicsOpacityEffect *opacity = new QGraphicsOpacityEffect(this);
opacity->setOpacity(0.8);
image ->setGraphicsEffect(opacity);
label = scene->addText(icon_name,font);
QPointF labelOffset(((70 - label->boundingRect().width()) / 2), 85);//(51.2 - label->boundingRect().width()) / 2)
label ->setPos(QPointF(x, y) + labelOffset);
// label ->setDefaultTextColor(QColor(255,255,255));
}
}
//双击鼠标左键,结束应用程序
void interface::mouseDoubleClickEvent(QMouseEvent *event)
{
if(event->button()==Qt::LeftButton)
{
this->close();
}
}
void interface::close()
{
this->close();
}
void interface::debug()
{
qDebug()<<"delete";
}
/*void interface::menuinfo()
{
//实例化tablemodel类的对象
//show
dish = new Dialog(); //dish 为dialog型的指针
dish->show();
}
void interface::tableinfo(){
table = new Dialog();
table->show();
}
void interface::calendar(){
}
void interface::booking(){
}
void interface::opentable(){
}
void interface::userinfo(){
}
*/
void interface::mouseReleaseEvent(QMouseEvent *event)
{
if( QGraphicsItem *item = itemAt(event->pos()))
{
if (qgraphicsitem_cast<iconitem *>(item)) //<>判断类型 item是值
{
if (iconitem *image = qgraphicsitem_cast<iconitem *>(item))
{
switch(image->id())
{
case 0:debug();break;
// case 1:calendar();break;
case 2:close();break;
//case 3:tableinfo();break;
// case 4:booking();break;
// case 5:opentable();break;
// case 6:userinfo();break;
// case 7:print();break;
}
}
}
}
}
一运行close就会停滞工作 谢谢大家