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 小时前
【从零开始学Java | 第十八篇】BigInteger
java·开发语言·新手入门
宵时待雨2 小时前
C++笔记归纳14:AVL树
开发语言·数据结构·c++·笔记·算法
执笔画流年呀2 小时前
PriorityQueue(堆)续集
java·开发语言
山川行2 小时前
关于《项目C语言》专栏的总结
c语言·开发语言·数据结构·vscode·python·算法·visual studio code
呜喵王阿尔萨斯2 小时前
C and C++ code
c语言·开发语言·c++
左左右右左右摇晃2 小时前
JDK 1.7 ConcurrentHashMap——分段锁
java·开发语言·笔记
xcLeigh2 小时前
Python入门:Python3基础练习题详解,从入门到熟练的 25 个实例(六)
开发语言·python·教程·python3·练习题
烤麻辣烫3 小时前
I/O流 基础流
java·开发语言·学习·intellij-idea
我命由我123453 小时前
React - BrowserRouter 与 HashRouter、push 模式与 replace 模式、编程式导航、withRouter
开发语言·前端·javascript·react.js·前端框架·html·ecmascript
Yvonne爱编码3 小时前
Java 中的 hashCode () 与 equals () 核心原理、契约规范、重写实践与面试全解
java·开发语言·数据结构·python·hash