myMainWindow.h文件
#include <qmainwindow.h>
#include <qwidget.h>
#include <qmultilineedit.h>
#include <qpopupmenu.h>
#include <qtoolbar.h>
#include <qpixmap.h>
#include <qaction.h>
#include <qstring.h>
class myMainWindow:public QMainWindow
{
Q_OBJECT
public:
myMainWindow(QWidget *parent=0,const char *name =0);
public slots:
void newFile();
void open();
void open(const char *fileName);
void save();
void saveAs();
void undo();
void redo();
void cut();
void copy();
void paste();
void del();
void selectAll();
void font();
void aboutNotePad();
private:
QPopupMenu *file;
QPopupMenu *edit;
QPopupMenu *option;
QPopupMenu *help;
QToolBar *toolBar;
QPixmap openIcon;
QPixmap saveIcon;
QMultiLineEdit *centralWidget;
QAction *fileOpenAction;
QAction *fileNewAction;
QAction *fileSaveAction;
QAction *fileSaveAsAction;
QAction *fileQuitAction;
QAction *editUndoAction;
QAction *editRedoAction;
QAction *editCutAction;
QAction *editCopyAction;
QAction *editPasteAction;
QAction *editDelAction;
QAction *editSelectAllAction;
QAction *optionFontAction;
QAction *aboutAction;
QString filename;
};
myMainWindow.cpp文件
#include <qfont.h>
#include <qfontdialog.h>
#include <qstring.h>
#include <qfiledialog.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qmessagebox.h>
#include <qmenubar.h>
#include <qstatusbar.h>
#include <qapplication.h>
#include "fileopen.xpm"
#include "filesave.xpm"
#include "myMainWindow.h"
myMainWindow::myMainWindow(QWidget *parent,const char *name)
:QMainWindow(parent,name)
{
openIcon=QPixmap(fileopen);
saveIcon=QPixmap(filesave);
file=new QPopupMenu(this);
edit=new QPopupMenu(this);
option=new QPopupMenu(this);
help=new QPopupMenu(this);
fileNewAction = new QAction("New File",openIcon,"&New", CTRL+Key_N,file,"new");
connect(fileNewAction,SIGNAL(activated()),this,SLOT(newFile()));
fileOpenAction=new QAction("Open File",saveIcon,"&Open",CTRL+Key_O,file,"open");
connect(fileOpenAction,SIGNAL(activated()),this,SLOT(open()));
fileSaveAction=new QAction("Save File","&Save",CTRL+Key_S,file,"save");
connect(fileSaveAction,SIGNAL(activated()),this,SLOT(save()));
fileSaveAsAction=new QAction("SaveAs File","Save&As",SHIFT+Key_S,file,"saveAs");
connect(fileSaveAsAction,SIGNAL(activated()),this,SLOT(saveAs()));
fileQuitAction=new QAction("Quit","&Quit",ALT+Key_Q,file,"quit");
QObject::connect(fileQuitAction,SIGNAL(activated()),qApp,SLOT(quit()));
editUndoAction=new QAction("Undo","&Undo",CTRL+Key_Z,edit,"undo");
connect(editUndoAction,SIGNAL(activated()),this,SLOT(undo()));
editRedoAction=new QAction("Redo","&Redo",CTRL+Key_Y,edit,"redo");
connect(editRedoAction,SIGNAL(activated()),this,SLOT(redo()));
editCutAction=new QAction("Cut","&Cut",CTRL+Key_X,edit,"cut");
connect(editCutAction,SIGNAL(activated()),this,SLOT(cut()));
editCopyAction=new QAction("Copy","&Copy",CTRL+Key_C,edit,"copy");
connect(editCopyAction,SIGNAL(activated()),this,SLOT(copy()));
editPasteAction=new QAction("Paste","&Paste",CTRL+Key_V,edit,"paste");
connect(editPasteAction,SIGNAL(activated()),this,SLOT(paste()));
editSelectAllAction=new QAction("SelectAll","Select&All",CTRL+Key_A,edit,"selectAll");
connect(editSelectAllAction,SIGNAL(activated()),this,SLOT(selectAll()));
optionFontAction=new QAction("Font","&Font",CTRL+SHIFT+Key_F,option,"font");
connect(optionFontAction,SIGNAL(activated()),this,SLOT(font()));
aboutAction=new QAction("AboutNotePad","&AboutNotePad",SHIFT+Key_F1,help,"aboutNotePad");
connect(aboutAction,SIGNAL(activated()),this,SLOT(aboutNotePad()));
toolBar=new QToolBar(this);
fileOpenAction->addTo(toolBar);
fileSaveAction->addTo(toolBar);
menuBar()->insertItem("&File",file);
menuBar()->insertItem("&Edit",edit);
menuBar()->insertItem("&Option",option);
menuBar()->insertItem("&Help",help);
fileNewAction->addTo(file);
fileOpenAction->addTo(file);
fileSaveAction->addTo(file);
fileSaveAsAction->addTo(file);
file->insertSeparator();
fileQuitAction->addTo(file);
editUndoAction->addTo(edit);
editRedoAction->addTo(edit);
edit->insertSeparator();
editCutAction->addTo(edit);
editCopyAction->addTo(edit);
editPasteAction->addTo(edit);
editDelAction->addTo(edit);
edit->insertSeparator();
editSelectAllAction->addTo(edit);
optionFontAction->addTo(option);
aboutAction->addTo(help);
centralWidget=new QMultiLineEdit(this,"editor");
centralWidget->setFocus();
setCentralWidget(centralWidget);
}
void myMainWindow::newFile()
{
myMainWindow *newWindow = new myMainWindow;
newWindow->setCaption("No Caption--NotePad");
newWindow->show();
}
void myMainWindow::open()
{
QString fn=QFileDialog::getOpenFileName(QString::null,QString::null,this);
if (!fn.isEmpty())
open(fn);
else
statusBar()->message( "Loading aborted", 2000 );
}
void myMainWindow::open( const char *fileName )
{
QFile f(fileName);
if (!f.open(IO_ReadOnly))
return;
centralWidget->clear();
QTextStream t(&f);
while (t.atEnd()==0)
{
QString s = t.readLine();
centralWidget->append( s );
}
f.close();
centralWidget->update();
setCaption( fileName );
}
void myMainWindow::save()
{
if (filename.isEmpty())
{
saveAs();
return;
}
QString text = centralWidget->text();
QFile f(filename);
if (!f.open(IO_WriteOnly))
{
statusBar()->message( QString("Could not write to %1").arg(filename), 2000 );
return;
}
QTextStream t( &f );
t << text;
f.close();
centralWidget->setEdited( FALSE );
setCaption( filename );
statusBar()->message( QString( "File %1 saved" ).arg( filename ), 2000 );
}
void myMainWindow::saveAs()
{
QString fn=QFileDialog::getSaveFileName(QString::null,QString::null,this );
if (!fn.isEmpty())
{
filename = fn;
save();
}
else
statusBar()->message( "Saving aborted", 2000 );
}
}
void myMainWindow::aboutNotePad()
{
QMessageBox::about( this, "NotePad ","This NotePad carries out simple use");
}
void myMainWindow::undo()
{
}
void myMainWindow::redo()
{
}
void myMainWindow::copy()
{
}
void myMainWindow::cut()
{
}
void myMainWindow::paste()
{
}
void myMainWindow::del()
{
}
void myMainWindow::selectAll()
{
}
void myMainWindow::font()
{
bool ok;
QFont myFont=QFontDialog::getFont(&ok,QFont("Times",12));
if(ok)
{
centralWidget->setFont(myFont);
}
}
main.cpp文件
#include "myMainWindow.h"
#include <qapplication.h>
int main(int argc,char **argv)
{
QApplication app(argc,argv);
myMainWindow w;
w.setGeometry(10,10,470,470);
app.setMainWidget(&w);
w.show();
return app.exec();
}
刚学习Qt,想模仿着编个简单记事本程序,有些函数还没有完成,这段程序能编译通过,但就是运行没有弹出窗口,怎么回事?大家帮看看。谢谢!
为什么我能在QT3下可以编译通过,但QT2不行,凡用QFileDialog成员函数的地方都有问题,QFileDialog不是QT3新增加的类呀,怎么回事?