QT程序运行时出错,烦请帮忙看看
程序报如下错误:
Unhandled exception at 0x671d3226 (QtCored4.dll) in cuteEdit.exe: 0xC0000005: Access violation reading location 0x8b04c483.
原码如下:
//file cuteedit.h
#ifndef CUTEEDIT_H
#define CUTEEDIT_H
#include <QtGui/QMainWindow>
#include <QString>
#include "ui_cuteedit.h"
class cuteEdit : public QMainWindow, private Ui::cuteEditClass
{
Q_OBJECT
public:
cuteEdit(QWidget *parent = 0, Qt::WFlags flags = 0);
~cuteEdit();
private:
Ui::cuteEditClass ui;
void setupActions();
protected:
bool mayDiscardDocument();
void saveFile(const QString&);
public slots:
void newFile();
void loadFile();
void saveFile();
void saveFileAs();
void undo();
void redo();
void copy();
void about();
private:
QString mFilePath;
};
#endif // CUTEEDIT_H
//cuteedit.cpp
#include "cuteedit.h"
#include <QtGui/QApplication>
#include <QtGui/QLabel>
#include <QtGui/QFileDialog>
#include <QtGui/QMessageBox>
#include <QtGui/QStatusBar>
cuteEdit::cuteEdit(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
setupActions();
}
cuteEdit::~cuteEdit()
{
}
void cuteEdit::setupActions()
{
connect(action_Quit, SIGNAL(triggered(bool)), qApp, SLOT(quit()));
connect(actionOpen, SIGNAL(triggered(bool)), this, SLOT(loadFile()));
connect(action_Save, SIGNAL(triggered(bool)), this, SLOT(saveFile()));
connect(action_Save_as, SIGNAL(triggered(bool)), this, SLOT(saveFileAs()));
connect(textEdit, SIGNAL(copyAvailable(bool)), actionCo_Py, SLOT(setEnabled(bool)));
connect(textEdit, SIGNAL(undoAvailable(bool)), actionUndo, SLOT(setEnabled(bool)));
connect(textEdit, SIGNAL(redoAvailable(bool)), actionRedo, SLOT(setEnabled(bool)));
connect(actionCo_Py, SIGNAL(triggered(bool)), this, SLOT(copy()));
connect(actionUndo, SIGNAL(triggered(bool)), this, SLOT(undo()));
connect(actionRedo, SIGNAL(triggered(bool)), this, SLOT(redo()));
connect(action_About_me, SIGNAL(triggered(bool)), this, SLOT(about()));
}
void cuteEdit::loadFile()
{
QString filename = QFileDialog::getOpenFileName(this);
QFile file(filename);
if (file.open(QIODevice::ReadOnly| QIODevice::Text))
{
textEdit->setPlainText(QString::fromUtf8(file.readAll()));
mFilePath = filename;
this->statusBar()->showMessage(tr("File successfully loaded."), 3000);
}
}
void cuteEdit::saveFile()
{
if(mFilePath.isEmpty())
{
saveFileAs();
}
else
{
saveFile(mFilePath);
}
}
void cuteEdit::saveFile(const QString &name)
{
QFile file(name);
if (file.open(QIODevice::WriteOnly| QIODevice::Text))
{
file.write(textEdit->toPlainText().toUtf8());
this->statusBar()->showMessage(tr("File saved successfully."), 3000);
}
}
void cuteEdit::saveFileAs()
{
mFilePath = QFileDialog::getSaveFileName(this);
if(mFilePath.isEmpty())
{
return;
}
saveFile(mFilePath);
}
bool cuteEdit::mayDiscardDocument()
{
if (textEdit->document()->isModified())
{
QString filename = mFilePath;
if (filename.isEmpty())
{
filename = tr("Unnamed");
}
if (QMessageBox::question(this, tr("Save Document?"),
tr("You want to create a new document, but the "
"changes in the current document ’%1’ have not "
"been saved. How do you want to proceed?"),
tr("Save Document"), tr("Discard Changes") ))
{
saveFile();
}
return true;
}
return false;
}
void cuteEdit::newFile()
{
if (!mayDiscardDocument())
{
return;
}
textEdit->setPlainText("");
mFilePath = "";
}
void cuteEdit::undo()
{
textEdit->document()->undo();
}
void cuteEdit::redo()
{
textEdit->document()->redo();
}
void cuteEdit::copy()
{
textEdit->copy();
}
void cuteEdit::about()
{
QMessageBox::about(this, tr("About CuteEdit"),
tr("CuteEdit 1.0\nA Qt application example.\n"
"(c) 2006 Daniel Molkentin, Open Source Press"));
}
#ifndef UI_CUTEEDIT_H
#define UI_CUTEEDIT_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QTextEdit>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_cuteEditClass
{
public:
QAction *action_Open;
QAction *actionOpen;
QAction *action_Save;
QAction *action_Save_as;
QAction *action_Quit;
QAction *action_About_me;
QAction *action_Cut;
QAction *actionCo_Py;
QAction *actionPaste;
QAction *actionUndo;
QAction *actionRedo;
QWidget *centralWidget;
QTextEdit *textEdit;
QStatusBar *pStatusBar;
QMenuBar *menuBar;
QMenu *menuAdadfdf;
QMenu *menuEdit;
QMenu *menu_Help;
void setupUi(QMainWindow *cuteEditClass)
{
......
}
程序在ccp文件中的connect(action_Quit, SIGNAL(triggered(bool)), qApp, SLOT(quit()));就开始出错。