第一个Qt程序

创建项目

进入ui界面拖一个按钮

在头文件中添加函数说明

cpp 复制代码
#ifndef HELLO_H
#define HELLO_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui {
class Hello;
}
QT_END_NAMESPACE

class Hello : public QMainWindow
{
    Q_OBJECT

public:
    Hello(QWidget *parent = nullptr);
    ~Hello();
    
private slots:
    void showDialog();
    
private:
    Ui::Hello *ui;
};
#endif // HELLO_H

holle.cpp

cpp 复制代码
#include "hello.h"
#include "ui_hello.h"

#include <QMessageBox>

Hello::Hello(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Hello)
{
    ui->setupUi(this);
    //信号与槽进行连接
    connect(ui->pushButton,&QPushButton::clicked,this,&Hello::showDialog);
}

Hello::~Hello()
{
    delete ui;
}

//槽函数
void Hello::showDialog()
{
    QMessageBox::information(this,QString::fromLocal8Bit("hello"),QString::fromLocal8Bit("hello"));
}

代码详解

cpp 复制代码
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);  // 每个qt窗口应用程序都需要有一个QApplication对象
    HelloCosBrowser w;
    w.show();
    return a.exec(); // exec 让程序进入事件循环,作用:接收来自用户的事件,如鼠标事件,键盘事件
}
cpp 复制代码
#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class hello; }
QT_END_NAMESPACE

class hello : public QWidget  // QWidget是所有应用程序窗口类的基类
{
    Q_OBJECT  // 支持Qt的特性,如信号槽、对象树、元对象等

public:
    hello(QWidget *parent = nullptr);  //parent == nullptr时,该窗口为独立窗口,可在任务栏看到;当parent != nullptr,该窗口作为主窗口的控件

    ~hello();

private slots:
    void showDialog();

private:
    Ui::hello *ui;
};
#endif // HELLOCOSBROWSER_H

文件列表

文件名称 描述
pro文件 该文件是Qt的项目文件,qmake工具可根据此文件生成makefile
pro.user文件 该文件包含和用户相关的项目信息(不需要关心)
.ui文件 Qt的设计师界面文件
.cpp文件 C++源文件
.h文件 C++头文件

moc编译器的由来

  • 新的信号槽idea如何实现

Qt编译过程

moc的运行方式

  • moc编译工具由Qt框架自动调用
  • 扫描C++头文件,查找Q_OBJECT宏

使用方法

  • 继承QObject对象和其子类
  • 包含Q_OBJECT宏

为窗口加上图标

  • 准备图标文件
  • 调用setWindowIcon方法
cpp 复制代码
{
    ui->setupUi(this);

    connect(ui->pushButton, &QPushButton::clicked, this, &HelloCosBrowser::showDialog);
    setStyleSheet("QWidget{font-size: 24pt;}"); //qss对标css

    QIcon icon;
    icon.addFile("F:/4-2/images/logo.ico");
    setWindowIcon(icon);
}

为应用程序加上图标

  • 准备图标文件,格式为ico
  • 修改pro工程文件 RC_ICONS=logo.ico
  • 当指定了应用程序图标后,不需额外指定窗口图标

发布应用的三种方式

手动部署

拷贝动态库到exe目录下

打开文件的debug目录

按提示从qt目录复制dll

windeployqt部署

  • 查找windeployqt.exe程序
  • 加入环境变量
  • 执行命令windeployqt.exe exe所在目录

使用Creator部署

  • 项目导航窗口-运行-部署-添加自定义部署
  • 输入windeployqt.exe程序及对应的命令行参数
  • 执行部署命令
相关推荐
@尘音34 分钟前
QT——TCP网络调试助手
开发语言·qt·tcp/ip
低配加班人35 分钟前
【Jetson AGX Orin(Arm Linux)安装pyqt5及Format_BGR888报错】
linux·arm开发·qt
马剑威(威哥爱编程)1 小时前
Java如何实现PDF转高质量图片
java·开发语言·pdf·1024程序员节
CoderJia程序员甲2 小时前
重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer
java·spring boot·reactor·1024程序员节
@尘音2 小时前
QT——记事本项目
开发语言·qt
长潇若雪3 小时前
指针进阶(四)(C 语言)
c语言·开发语言·经验分享·1024程序员节
混迹网络的权某4 小时前
每天一道C语言精选编程题之求数字的每⼀位之和
c语言·开发语言·考研·算法·改行学it·1024程序员节
IronmanJay7 小时前
【LeetCode每日一题】——862.和至少为 K 的最短子数组
数据结构·算法·leetcode·前缀和·双端队列·1024程序员节·和至少为 k 的最短子数组
加载中loading...8 小时前
Linux线程安全(二)条件变量实现线程同步
linux·运维·服务器·c语言·1024程序员节
Wx120不知道取啥名8 小时前
C语言之长整型有符号数与短整型有符号数转换
c语言·开发语言·单片机·mcu·算法·1024程序员节