• QT编程,QMainWindow、事件


    目录

    1、QMainWindow

    2、事件

    1、QMainWindow

           QMenuBar:菜单栏

           QMenu: 菜单

           QAction: 动作

           QToolBar: 工具栏

           QStatusBar: 状态栏

          

        setWindowTitle("主窗口");

        //: + 前缀 + 文件名

        setWindowIcon(QIcon(":/mw_images/10.png"));

        resize(640, 480);

        //一个主窗口只能有一个菜单栏

        QMenuBar *menuBar = this->menuBar();

        //可以增加多个菜单

        //QMenu *fileMenu = menuBar->addMenu(QIcon(":/mw_images/file.png"), "文件");

        QMenu *fileMenu = menuBar->addMenu("文件");

        QMenu *editMenu = menuBar->addMenu("编辑");

        QMenu *setMenu = menuBar->addMenu("设置");

        //一个菜单可以增加多个菜单项

        openAct = fileMenu->addAction(QIcon(":/mw_images/open.png"), "打开文件");

        fileMenu->addSeparator();

        closeAct = fileMenu->addAction(QIcon(":/mw_images/close.png"), "关闭文件");

        //增加工具栏,一个主窗口可以有多个工具栏

        QToolBar *fileTool = this->addToolBar("文件");

        fileTool->addAction(openAct);

        fileTool->addAction(closeAct);

        fileTool->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);

        fileTool->setFloatable(true);

        fileTool->setMovable(true);

        //每个工具栏可以有多个工具项

        QToolBar *editTool = this->addToolBar("编辑");

        editTool->addAction(copyAct);

        editTool->addAction(pasteAct);

        QToolBar *setTool = this->addToolBar("设置");

        setTool->addAction(fontAct);

        setTool->addAction(colorAct);

        //一个主窗口可以有多个滑动窗口

        QDockWidget *dw1 = new QDockWidget("滑动窗口");

        dw1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

        dw1->setFloating(false);

        //增加一个滑动窗口

        addDockWidget(Qt::LeftDockWidgetArea, dw1);

        //一个主窗口只能有一个中央部件

        te = new QTextEdit;

        te->setFixedSize(640, 480);

        setCentralWidget(te);

        //一个主窗口只能有个状态栏

        QStatusBar *statBar = this->statusBar();

        lb_status = new QLabel;

        lb_status->setText("xxx file is editing... ");

        prog_bar = new QProgressBar;

        prog_bar->setValue(67);

        statBar->addWidget(lb_status);

        statBar->addWidget(prog_bar);

    2、事件

                  //事件处理的统一的入口

                  bool event(QEvent *event);

                  //特定事件处理器

                  void mousePressEvent(QMouseEvent *e);  --- 鼠标按下事件

                         e->button();  --- 获取鼠标按键

                                Qt::LeftButton(); --- 左键

                                Qt::RightButton();  --- 右键

                         e->pos();   --- 获取该界面鼠标坐标

                         e->x();     --- 获取该界面鼠标的x坐标

                         e->y();

                         e->globalPos();  --- 获取全局界面(屏幕)鼠标坐标

                         e->globalX();

                         e->globalY();

                  void mouseReleaseEvent(QMouseEvent *e);  --- 鼠标松开事件

                  void mouseMoveEvent(QMouseEvent *e);     --- 鼠标移动事件

                  void mouseDoubleClickEvent(QMouseEvent *e); --- 鼠标双击事件

                  void wheelEvent(QWheelEvent *e);  --- 滚轮事件

                         e->angleDelta();

                         e->delta();    --- 获取滚轮增量

                  void keyPressEvent(QKeyEvent *e);  --- 按键按下事件

                         e->key(); --- 获取按键

                                Qt::Key_A

                                Qt::Key_0

                                Qt::Key_Up;

                                Qt::Key_Down;

                                Qt::Key_Return/Qt::Key_Enter

                  void keyReleaseEvent(QkeyEvent *e);  --- 按键松开事件

                  void timerEvent(QTimerEvent *e);   --- 定时器时间

                            startTimer(int ms);

  • 相关阅读:
    [2023-09-13]使用EXPDP/IMPDP迁移数据库后统计信息引起的性能问题
    Mysql索引优化2
    Vue入门
    Leetcode刷题详解——解码方法
    AliLinux的使用Docker初始化服务(详细)
    基于SSM的IT运维管理系统
    VFP技巧
    Flutter基础学习(一)Dart语言入门
    从零实现带RLHF的类ChatGPT:逐行解析微软DeepSpeed Chat
    MyBatis开发的详细步骤
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/133776870