这个实验用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_OBJECTpublic: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();
}

转载于:https://www.cnblogs.com/JeffreyCheung/p/5826664.html

Qt实现基本QMainWindow主窗口程序相关推荐

  1. QT开发(二十二)——QMainWindow主窗口

    谢绝转载 一.主窗口简介 QT中直接支持主窗口,QMainWindow是QT中主窗口的基类,是继承于QWidget类的容器型组件. QMainWindow内部封装了菜单栏.工具栏.中心组件.停靠组件. ...

  2. qt 设置串口起始位_【IT专家】Qt:如何设置主窗口的初始位置?

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Qt :如何设置主窗口的初始位置? Qt :如何设置主窗口的初始位置? [ 英 ]Qt: how to set main window's ini ...

  3. Qt 5.12 编写多窗口程序(新手手把手教学)

    目录 实现功能: 实现原理: 实现过程: 1.首先新建 Qt工程,工程名为 NewForm,Base class 选为 QWidget.建立好后工程文件列表如下图. 2.新建对话框类,如下图,在新建中 ...

  4. QT中如何在主窗口中添加子窗口

    1.方法 原理其实很简单,和在窗口上动态(代码的形式)添加控件的方法一样,但需要设置一下子窗口的属性: 在子窗口构造函数中添加代码: setWindowFlags(Qt::FramelessWindo ...

  5. distiller的另一个实例正忙于启动_PYQT5学习(02):利用Qt Designer制作第一个窗口程序

    目标 利用Qt Designer设计窗口界面 使用PyUIC把Qt Designer生成的UI文件转换为py文件 使用转换生成的py文件 创建项目 启动启动pycharm并创建项目 这一环节在这里就不 ...

  6. Qt之如何获取主窗口的指针

    QMainWindow* getMainWindow() {foreach (QWidget *w, qApp->topLevelWidgets())if (QMainWindow* mainW ...

  7. qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...

    用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主 ...

  8. QT应用程序-获取Application-获取主窗口指针-QT内嵌浏览器-QT菜单动作

    在编写QT程序时,有时需要获取主窗口程序指针和主窗口指针,方便控制界面,编写相应的逻辑,而QT则提供了类似的功能. 1.获取应用程序 qApp 宏就可以获取 QApplication 实例,只要使用了 ...

  9. 《快速掌握PyQt5》第二十三章 主窗口QMainWindow

    第二十三章 主窗口QMainWindow 23.1 记事本应用 23.3 程序启动画面QSplashScreen 23.2 小结 <快速掌握PyQt5>专栏已整理成书出版,书名为<P ...

最新文章

  1. ViewStub 使用注意事项
  2. mysql workbench 在模板与数据库间同步
  3. 将CRgn rgn对象以图片形式输出便于查看
  4. 外威客外包网站Elance
  5. 罗永浩回应被列老赖;三星解散自研 CPU 团队;Python 采用 12 个月的发布周期 | 极客头条...
  6. LOW_VALUE、HIGH_VALUE、ENDPOINT_VALUE转换--UTL_RAW、DBMS_STATS.CONVERT_RAW_VALUE
  7. h264和h265视频流SDP描述详解
  8. LoRa开发|LoRa模组AT指令开发
  9. Wei Yang Bryan Lim, etc. Federated Learning in Mobile Edge Networks: A Comprehensive Survey.
  10. 数学 - 基本初等函数导数公式及求导法则
  11. python可以做什么灰产-广州市标书资料销毁详细流程
  12. 理解AMQP协议和RabbitMQ的性能和可靠平衡
  13. 【大疆DJI】安卓开发实习历程- 0.前期准备到面试(HR电话初面+技术一面+技术二面/终面+OC)
  14. 吴恩达神经网络和深度学习
  15. Obsidian DataView插件介绍
  16. 液压管路渗漏图像识别检测方法研究
  17. eclipse debug 执行到断点处并没有停下,断点无效问题
  18. 前端在线预览word,excel,pdf
  19. mac m1 tensorflow环境安装问题
  20. Xbox One手柄 + Xbox Wireless Adapter PC无线适配器驱动安装、配对全流程

热门文章

  1. 入门必看!给零基础新手的超快速色彩知识小科普
  2. Android利用AccessibilityService自动获取微信号
  3. js_jQuery综合机试练习题
  4. 递归_三要素_基础算法必备
  5. mysql事务操作——transaction
  6. .Net软件工程师必备面试题134道
  7. 判断是否为微信环境下打开的网页
  8. lazy初始化和线程安全的单例模式
  9. js 面向对象例子
  10. jquery是库还是框架?