第一个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程序及对应的命令行参数
  • 执行部署命令
相关推荐
爱思考的小伙3 小时前
Qt-02:信号与槽
开发语言·qt
森G4 小时前
22、GUI控件类---------常见界面组件类
qt
森G6 小时前
21、信号和槽详解---------QT基础
qt
西装没钱买6 小时前
QT组播的建立和使用(绑定特定的网卡,绑定特定IP)
网络·c++·qt·udp·udp组播
森G7 小时前
20、元对象系统---------QT基础
qt
Laurence7 小时前
CMake 报错 Failed to find required Qt component WebEngineWidgets
qt·webengine·cmake·找不到
习惯就好zz7 小时前
Qt Quick 系统托盘完整实践
开发语言·qt·qml·系统托盘·system tray·qapplication·qguiapplication
笨笨马甲7 小时前
Qt集成OpenCV
开发语言·qt
笨笨马甲7 小时前
Qt 工业机器视觉开发
开发语言·qt
小灰灰搞电子7 小时前
Qt 打印输出:printf与qDebug的区别
开发语言·qt