这个实验用Qt实现基本QMainWindow主窗口


先上实验效果图

    

打开一个文件,读取文件类容




详细步骤:


1.打开Qt creator新建MainWindow工程




右键工程名添加新文件,main文件,后缀自动补全后为main.cpp






选中工程,再次右键,选择模板的时候选择C++类,添加一个MainWindow类,该类继承字QMainWindow





代码部分


#ifndef MAINWINDOW_H #define MAINWINDOW_H  #include <QMainWindow> #include <QApplication> #include <QAction> #include <QMenu> #include <QFileDialog> #include <QFile> #include <QTextStream> #include <QToolBar> #include <QTextEdit> #include <QMainWindow> #include <QString> #include <QMenuBar>   class MainWindow : public QMainWindow {     Q_OBJECT  public:     explicit MainWindow(QWidget *parent = 0);     ~MainWindow();      void createMenus();     void createActions();     void createToolBars();     void loadFile(QString fileName);  public slots:     void slotNewFile();     void slotOpenFile();     void slotSaveFile();  private:       QMenu *fileMenu;     QMenu *editMenu;     QMenu *aboutMenu;     QString fileName;      QToolBar *fileTool;     QToolBar *editTool;      QAction *fileOpenAction;     QAction *fileNewAction;     QAction *fileSaveAction;     QAction *exitAction;     QAction *copyAction;     QAction *cutAction;     QAction *pasteAction;     QAction *aboutAction;      QTextEdit *text;   };  #endif // MAINWINDOW_H 

#include "mainwindow.h"   MainWindow::MainWindow(QWidget *parent) :     QMainWindow(parent)  {     //设置主窗口标题         setWindowTitle(tr("QMainWindow"));         text = new QTextEdit(this);         setCentralWidget(text);          createActions();         createMenus();         createToolBars();  }  MainWindow::~MainWindow() {  }  void MainWindow::createActions() {     //通过图片路径来实现添加Qt资源文件目的     fileOpenAction = new QAction(QIcon("C:/qt/Mwindow/open.png"),tr("Open"),this);     fileOpenAction->setShortcut(tr("Ctrl+O"));     fileOpenAction->setStatusTip(tr("Open a file"));     connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(slotOpenFile()));      fileNewAction = new QAction(QIcon("C:/qt/Mwindow/new.png"),tr("New"),this);     fileNewAction->setShortcut(tr("Ctrl+N"));     fileNewAction->setStatusTip(tr("new file"));     connect(fileNewAction,SIGNAL(triggered()),this,SLOT(slotNewFile()));      fileSaveAction = new QAction(QIcon("C:/qt/Mwindow/save.png"),tr("Save"),this);     fileSaveAction->setShortcut(tr("Ctrl+S"));     fileNewAction->setStatusTip(tr("save file"));     connect(fileNewAction,SIGNAL(triggered()),this,SLOT(slotSaveFile()));      exitAction = new QAction(tr("Exit"),this);     exitAction->setShortcut(tr("Ctrl+Q"));     exitAction->setStatusTip(tr("exit"));     connect(exitAction,SIGNAL(triggered()),this,SLOT(close()));      cutAction = new QAction(QIcon("C:/qt/Mwindow/cut.png"),tr("Cut"),this);     cutAction->setShortcut(tr("Ctrl+X"));     cutAction->setStatusTip(tr("cut to clipboard"));     connect(cutAction,SIGNAL(triggered()),text,SLOT(cut()));      copyAction = new QAction(QIcon("C:/qt/Mwindow/copy.png"),tr("Copy"),this);     copyAction->setShortcut(tr("Ctrl+C"));     copyAction->setStatusTip(tr("copy to clipboard"));     connect(copyAction,SIGNAL(triggered()),this,SLOT(copy()));      pasteAction = new QAction(QIcon("C:/qt/Mwindow/paste.png"),tr("paste"),this);     pasteAction->setShortcut(tr("Ctrl+V"));     pasteAction->setStatusTip(tr("paste clipboard to selection"));     connect(pasteAction,SIGNAL(triggered()),this,SLOT(paste()));      aboutAction = new QAction(tr("About"),this);     connect(aboutAction,SIGNAL(triggered()),this,SLOT(slotAbout()));  }  void MainWindow::createMenus() {     fileMenu = menuBar()->addMenu(tr("File"));     fileMenu->addAction(fileNewAction);     fileMenu->addAction(fileOpenAction);     fileMenu->addAction(fileSaveAction);     fileMenu->addAction(exitAction);       editMenu = menuBar()->addMenu(tr("Edit"));     editMenu->addAction(copyAction);     editMenu->addAction(cutAction);     editMenu->addAction(pasteAction);       aboutMenu = menuBar()->addMenu(tr("Help"));     aboutMenu->addAction(aboutAction);  }  void MainWindow::createToolBars() {     fileTool = addToolBar("File");     fileTool->addAction(fileNewAction);     fileTool->addAction(fileOpenAction);     fileTool->addAction(fileSaveAction);      editTool = addToolBar("Edit");     editTool->addAction(copyAction);     editTool->addAction(cutAction);     editTool->addAction(pasteAction); }  void MainWindow::slotNewFile() {     MainWindow *newWin = new MainWindow;     newWin->show(); }  void MainWindow::slotOpenFile() {     fileName = QFileDialog::getOpenFileName(this);     if(!fileName.isEmpty())     {         if(text->document()->isEmpty())         {             loadFile(fileName);         }         else         {             MainWindow *newWin = new MainWindow;             newWin->show();             newWin->loadFile(fileName);         }      }  }   void MainWindow::loadFile(QString fileName) {     printf("file name:%s\n",fileName.data());     QFile file(fileName);     if(file.open(QIODevice::ReadOnly|QIODevice::Text))     {         QTextStream textStream(&file);         while(!textStream.atEnd())         {             text->append(textStream.readLine());             printf("read line.\n");         }         printf("end\n");      } }    



#include <QtGui/QApplication> #include "mainwindow.h"   int main(int argc, char *argv[]) {     QApplication a(argc, argv);     MainWindow w;     w.show();       return a.exec(); }