QT——GUI程序原理分析、Hello QT、调试的基本方法

1.命令行应用程序的特点

  • 是一种基于顺序执行结果的可执行程序
  • 程序执行过程中不需要与用户产生交互
  • 程序执行后给出最终的运行结果
  • 程序的运行有固定的开始和固定的结束

2.图形界面应用程序(GUI)的特点

  • 是一种基于消息驱动模型的可执行程序
  • 程序的执行依赖于用户的交互过程
  • 程序执行过程中实时响应用户操作
  • 一般情况下程序执行后不会主动退出

3.GUI开发非常适合采用面向对象方法学

  • 将界面元素定义为对应的类
  • 通过抽象和封装可以隐藏界面元素的细节
  • 程序的创建过程就是组合不同界面元素对象的过程

4.Hello QT

复制代码
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);    // Qapplication表示一个应用程序,而它的成员函数exec()则用来执行程序以及消息处理

    QMainWindow w;                 //定义一个QmainWindow主窗口对象w

    QPushButton b(&w);             //通过&w,在主窗口上定义QpushButton按钮对象b

    b.setText("Hello QT!");        //通过b对象的成员函数setText(),设置按钮名字为Hello QT

    w.show();                      //显示主窗口

    return a.exec();               //通过exec()执行程序以及消息处理
}

如果引用的库报错,则将鼠标放在引用的库上,点击F1,将圈住的代码加到.pro文件中------QT += widgets

  1. 调试的基本方法

(1)Log调试法

  • 在代码中加入一定的打印语句
  • 打印程序状态和关键变量的值

(2)断点调试法

  • 在开发环境中的对应代码行加上断点
  • 当程序运行到断点行时,程序暂停运行
  • 头文件**#include <QDebug>**
复制代码
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QDebug>

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);    // Qapplication表示一个应用程序,而它的成员函数exec()则用来执行程序以及消息处理

    QMainWindow w;                 //定义一个QmainWindow主窗口对象w

    QPushButton b(&w);             //通过&w,在主窗口上定义QpushButton按钮对象b

    b.setText("Hello QT!");        //通过b对象的成员函数setText(),设置按钮名字为Hello QT

    for(int i=0; i<10; i++)
    {
        qDebug()<<i; //将i的值输出到控制台
    }

    w.show();                      //显示主窗口

    return a.exec();               //通过exec()执行程序以及消息处理
}

运行结果:

设置断点:

相关推荐
隐积2 小时前
3.1.7.Qt容器大家族(3):QVariant——万能盒子
开发语言·qt
名字还没想好☜4 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
初级代码游戏5 小时前
iOS开发 Swift 速记1:变量和基本数据类型
开发语言·ios·swift
酷在前行6 小时前
【R生态】PERMANOVA 进阶实战:距离选择、PERMDISP、两两比较与受限置换(保姆级教程)
开发语言·r语言
cxr8286 小时前
Graphify vs GitNexus vs CodeGraph — 三工具架构深度对比
开发语言·架构·知识图谱
废弃的小码农8 小时前
功能测试--Day07--Python编程基础
开发语言·python
fengci.8 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
程序员zgh8 小时前
C++ 拷贝赋值运算符 详解
c语言·开发语言·c++
念何架构之路8 小时前
restartmanager-重启管理子系统
java·开发语言
SomeB1oody9 小时前
【RustyML入门】2.0. 经典机器学习
开发语言·后端·机器学习·rust·教程