第一个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程序及对应的命令行参数
  • 执行部署命令
相关推荐
czxyvX21 小时前
3-Qt常用控件
qt
开开心心就好1 天前
吾爱大佬原创的文件时间修改工具
安全·智能手机·pdf·电脑·智能音箱·智能手表·1024程序员节
努力努力再努力wz1 天前
【Qt 入门系列】从应用场景到开发环境:建立对 Qt 的第一层认知
c语言·开发语言·数据库·c++·b树·qt·缓存
LNN20221 天前
半导体设备上位机 Qt 实现计划
开发语言·数据库·qt
码农小韩1 天前
QT学习记录(三)——C++学习基础(三)
开发语言·c++·qt·学习·算法·嵌入式软件
buhuizhiyuci1 天前
【QT-百日筑基篇】找寻安静的落脚处,选择合适的功法进行修炼-QT深度了解对象树的特性
开发语言·qt
CSCN新手听安1 天前
【Qt】系统相关(二)鼠标事件的处理,鼠标的按下,释放,双击,移动,滚轮滚动事件的处理
开发语言·c++·qt
小短腿的代码世界1 天前
QtAV音视频播放实战深度解析:从零构建高性能跨平台播放器
qt·音视频
CSCN新手听安2 天前
【Qt】Qt窗口(八)QFontDialog字体对话框,QInputDialog输入对话框的使用,小结
开发语言·c++·qt
charlie1145141912 天前
AwesomeQt:最小的Qt6系列迷你版本教程发布!
linux·c++·qt·c