• Qt实现基本QMainWindow主窗口程序


    这个实验用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
    ",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.
    ");
            }
            printf("end
    ");
    
        }
    }
    
    #include <QtGui/QApplication>
    #include "mainwindow.h"
    
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
    
    
        return a.exec();
    }
    
  • 相关阅读:
    厂商前缀
    文本阴影和边框阴影
    2D转换
    overflow属性
    margin属性
    CSS圆角边框
    浮动定位
    文档流定位
    position属性
    选择器二
  • 原文地址:https://www.cnblogs.com/JeffreyCheung/p/5826664.html
Copyright © 2020-2023  润新知