第一个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程序及对应的命令行参数
  • 执行部署命令
相关推荐
小短腿的代码世界4 小时前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
宠..6 小时前
QComboBox 方法大全
开发语言·qt
郝学胜-神的一滴10 小时前
Qt 高级开发 011: 跨线程信号槽实战
开发语言·c++·qt·程序人生·开源软件·用户界面
小短腿的代码世界11 小时前
QHttpEngine深度解析:Qt嵌入式HTTP服务端的工业级架构与性能调优
qt·http·架构
学习,学习,在学习11 小时前
Qt 串口通讯架构
开发语言·c++·qt·架构·qt5
Shadow(⊙o⊙)12 小时前
qt信号和槽链接的接入与断开
开发语言·前端·c++·qt·学习
sycmancia1 天前
Qt——编辑交互功能的实现
开发语言·qt
qq_401700411 天前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
小短腿的代码世界1 天前
信号路由风暴:Qt算法交易系统的高频信号分发架构
qt·算法·架构
郝学胜-神的一滴1 天前
Qt 高级开发 010: 从跨界面传值到自定义信号
开发语言·c++·qt·程序人生·用户界面