二、Qt UI文件设计与运行机制

一、UI文件设计与运行机制

1、创建工程

在这里插入图片描述
在这里插入图片描述

2、添加控件,实现按钮点击

(1)添加控件

在这里插入图片描述

(2)添加信号和槽

在这里插入图片描述

2、分析项目结构

test_02
	test_02.pro			Qt工程文件
	Headers
		widget.h		设计的窗体类的头文件
	Sources
		main.cpp		主程序入口文件
		widget.cpp		窗体类的实现文件
	Forms
		widget.ui		界面文件,使用XML格式描述远见及布局

../build-xxx/ui_widget.h	组件、信号与槽实现的文件,根据ui界面文件编译自动生成

(1)项目管理文件

后缀为.pro
# 包含的模块
QT       += core gui
# 大于Qt4版本才包含widget模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 应用程序的名称,生成可执行程序的名称
TARGET = test_02
# 模板类型,应用程序模板
TEMPLATE = app

# 定义编译选项
#  QT_DEPRECATED_WARNINGS:当Qt的某些功能被标记为过时的,那么编译器会发出警告
DEFINES += QT_DEPRECATED_WARNINGS

# 编译器版本
CONFIG += c++11
# 源文件
SOURCES += \
        main.cpp \
        widget.cpp
# 头文件
HEADERS += \
        widget.h
# Form文件
FORMS += \
        widget.ui

(2)ui文件

由UI设计器自动生成,存储了组件和布局

在这里插入图片描述

(3)主函数文件

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);		// 定义并创建应用程序
    Widget w;						// 定义并创建窗口
    w.show();						// 显示窗口
    return a.exec();				// 应用长须运行,开始消息循环和事件处理
}

(4)widget类

// 头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;	// ui_widget.h文件定义的类,外部声明
}

class Widget : public QWidget
{
    Q_OBJECT 	// 宏,使用Qt信号与槽机制必须添加
public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;	// Ui::Widget类型的一个指针,指向可视化界面
};
#endif // WIDGET_H
// 源文件
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);	// 实现了组件的各种设置、信号与槽的关联,即ui_widget.h文件中实现方法
}

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

(5)ui_widget.h文件

#ifndef UI_WIDGET_H
#define UI_WIDGET_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QLabel *labDemo;
    QPushButton *bntClose;

    void setupUi(QWidget *Widget)
    {	// 组件对象创建、信号和槽关联
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(400, 300);
        labDemo = new QLabel(Widget);
        labDemo->setObjectName(QString::fromUtf8("labDemo"));
        labDemo->setGeometry(QRect(50, 90, 71, 41));
        QFont font;
        font.setPointSize(15);
        labDemo->setFont(font);
        bntClose = new QPushButton(Widget);
        bntClose->setObjectName(QString::fromUtf8("bntClose"));
        bntClose->setGeometry(QRect(310, 20, 75, 23));

        retranslateUi(Widget);
        QObject::connect(bntClose, SIGNAL(clicked()), Widget, SLOT(close()));

        QMetaObject::connectSlotsByName(Widget);
    } // setupUi

    void retranslateUi(QWidget *Widget)
    {
        Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
        labDemo->setText(QCoreApplication::translate("Widget", "\346\265\213\350\257\225", nullptr));
        bntClose->setText(QCoreApplication::translate("Widget", "\345\205\263\351\227\255", nullptr));
    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};	//widget类中指针的类型
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

二、可视化UI设计

实现一个程序实现:一个文本显示;三个复选框分别设置下划线、斜体、粗体;三个单选分别为红、绿、蓝三色;一个关闭按钮。

1、创建工程(基于QDialog,对话框)

2、添加组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、添加信号和槽

(1)关闭按钮

在这里插入图片描述

(2)通过组件实现复选框槽函数功能

在这里插入图片描述
在这里插入图片描述

void Dialog::on_checkBoxUnderline_clicked(bool checked)
{
    QFont font = ui->plainTextEdit->font();
    font.setUnderline(checked);
    ui->plainTextEdit->setFont(font);
}

void Dialog::on_checkBoxItalix_clicked(bool checked)
{
    QFont font = ui->plainTextEdit->font();
    font.setItalic(checked);
    ui->plainTextEdit->setFont(font);
}


void Dialog::on_checkBoxBold_clicked(bool checked)
{
    QFont font = ui->plainTextEdit->font();
    font.setBold(checked);
    ui->plainTextEdit->setFont(font);
}

在这里插入图片描述

(3)添加自定义槽函数,关联信号

实现槽函数
void Dialog::setTextFontColor()
{
    QPalette plet = ui->plainTextEdit->palette();
    plet.setColor(QPalette::Text, Qt::black);
    if(ui->radioButtonRed->isChecked())
    {
        plet.setColor(QPalette::Text, Qt::red);
    }
    else if (ui->radioButtonGreen->isChecked()) {
        plet.setColor(QPalette::Text, Qt::green);
    }
    else if (ui->radioButtonBlue->isChecked()) {
        plet.setColor(QPalette::Text, Qt::blue);
    }
    ui->plainTextEdit->setPalette(plet);
}
关联槽函数和消息
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    QObject::connect(ui->radioButtonRed, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
    QObject::connect(ui->radioButtonGreen, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
    QObject::connect(ui->radioButtonBlue, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
}

三、代码化UI设计

1、创建工程

创建一个Widget Application项目:QDialog作为窗口基类,不勾选“Generate form”(中文:创建界面),即干部床减ui文件

在这里插入图片描述

2、在对话框类(dialog)中添加控件对象

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QCheckBox>        // 复选框
#include <QRadioButton>     // 单选框
#include <QPushButton>      // 按钮
#include <QPlainTextEdit>   // 文本编辑框


class Dialog : public QDialog
{
    Q_OBJECT

private:
    // 复选框
    QCheckBox *checkBoxUnderline;
    QCheckBox *checkBoxItalic;
    QCheckBox *checkBoxBold;

    // 单选框
    QRadioButton *rBtnRed;
    QRadioButton *rBtnGreen;
    QRadioButton *rBtnBlue;

    // 文本编辑框
    QPlainTextEdit *plainTextEdit;

    // 按钮
    QPushButton *btnOK;
    QPushButton *btnChancel;
    QPushButton *btnClose;


public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
};

#endif // DIALOG_H
#include "dialog.h"
#include <QHBoxLayout>
#include <QVBoxLayout>


Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    // 文本编辑框
    plainTextEdit = new QPlainTextEdit(tr("Hello World"));
    // 修改字体大小
    QFont font = plainTextEdit->font();
    font.setPointSize(28);
    plainTextEdit->setFont(font);
    // 设置内容
    plainTextEdit->setPlainText(tr("Hello World !!!"));
    // 水平布局
    QHBoxLayout *HLayoutPlainTextEdit = new QHBoxLayout;
    HLayoutPlainTextEdit->addWidget(plainTextEdit);

    // 复选框
    checkBoxUnderline = new QCheckBox(tr("下划线"));
    checkBoxItalic = new QCheckBox(tr("斜体"));
    checkBoxBold = new QCheckBox(tr("加粗"));
    // 水平布局
    QHBoxLayout *HLayoutCheckBox = new QHBoxLayout;
    HLayoutCheckBox->addWidget(checkBoxUnderline);
    HLayoutCheckBox->addWidget(checkBoxItalic);
    HLayoutCheckBox->addWidget(checkBoxBold);


    // 单选框
    rBtnRed = new QRadioButton(tr("红色"));
    rBtnGreen = new QRadioButton(tr("绿色"));
    rBtnBlue = new QRadioButton(tr("蓝色"));
    // 水平布局
    QHBoxLayout *HLayoutRadioButton = new QHBoxLayout;
    HLayoutRadioButton->addWidget(rBtnRed);
    HLayoutRadioButton->addWidget(rBtnGreen);
    HLayoutRadioButton->addWidget(rBtnBlue);

    // 按钮
    btnOK = new QPushButton(tr("确定"));
    btnChancel = new QPushButton(tr("取消"));
    btnClose = new QPushButton(tr("关闭"));
    QHBoxLayout *HLayoutPushButton = new QHBoxLayout;
    HLayoutPushButton->addStretch();    // 添加占位
    HLayoutPushButton->addWidget(btnOK);
    HLayoutPushButton->addWidget(btnChancel);
    HLayoutPushButton->addStretch();    // 添加占位
    HLayoutPushButton->addWidget(btnClose);
    HLayoutPushButton->addStretch();    // 添加占位

    // 垂直对其
    QVBoxLayout *VLayout = new QVBoxLayout;
    VLayout->addLayout(HLayoutPlainTextEdit);
    VLayout->addLayout(HLayoutCheckBox);
    VLayout->addLayout(HLayoutRadioButton);
    VLayout->addLayout(HLayoutPushButton);

    // 将控件提交给对话框
    setLayout(VLayout);

}

Dialog::~Dialog()
{

}

所有控件已经出现在对话框中,且在拉伸对话框时,所有控件都等比缩放。

在这里插入图片描述

3、注册信号与槽

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QCheckBox>        // 复选框
#include <QRadioButton>     // 单选框
#include <QPushButton>      // 按钮
#include <QPlainTextEdit>   // 文本编辑框


class Dialog : public QDialog
{
    Q_OBJECT

private:
    // 复选框
    QCheckBox *checkBoxUnderline;
    QCheckBox *checkBoxItalic;
    QCheckBox *checkBoxBold;

    // 单选框
    QRadioButton *rBtnRed;
    QRadioButton *rBtnGreen;
    QRadioButton *rBtnBlue;

    // 文本编辑框
    QPlainTextEdit *plainTextEdit;

    // 按钮
    QPushButton *btnOK;
    QPushButton *btnChancel;
    QPushButton *btnClose;

private:
    void initUI();
    void initSignalSolts();

private slots:
    void on_checkUnderline(bool bChecked);
    void on_checkItalic(bool bChecked);
    void on_checkBold(bool bChecked);
    void on_setTextFontColor();


public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
};

#endif // DIALOG_H

#include "dialog.h"
#include <QHBoxLayout>
#include <QVBoxLayout>


void Dialog::initUI()
{
    // 文本编辑框
    plainTextEdit = new QPlainTextEdit(tr("Hello World"));
    // 修改字体大小
    QFont font = plainTextEdit->font();
    font.setPointSize(28);
    plainTextEdit->setFont(font);
    // 设置内容
    plainTextEdit->setPlainText(tr("Hello World !!!"));
    // 水平布局
    QHBoxLayout *HLayoutPlainTextEdit = new QHBoxLayout;
    HLayoutPlainTextEdit->addWidget(plainTextEdit);

    // 复选框
    checkBoxUnderline = new QCheckBox(tr("下划线"));
    checkBoxItalic = new QCheckBox(tr("斜体"));
    checkBoxBold = new QCheckBox(tr("加粗"));
    // 水平布局
    QHBoxLayout *HLayoutCheckBox = new QHBoxLayout;
    HLayoutCheckBox->addWidget(checkBoxUnderline);
    HLayoutCheckBox->addWidget(checkBoxItalic);
    HLayoutCheckBox->addWidget(checkBoxBold);


    // 单选框
    rBtnRed = new QRadioButton(tr("红色"));
    rBtnGreen = new QRadioButton(tr("绿色"));
    rBtnBlue = new QRadioButton(tr("蓝色"));
    // 水平布局
    QHBoxLayout *HLayoutRadioButton = new QHBoxLayout;
    HLayoutRadioButton->addWidget(rBtnRed);
    HLayoutRadioButton->addWidget(rBtnGreen);
    HLayoutRadioButton->addWidget(rBtnBlue);

    // 按钮
    btnOK = new QPushButton(tr("确定"));
    btnChancel = new QPushButton(tr("取消"));
    btnClose = new QPushButton(tr("关闭"));
    QHBoxLayout *HLayoutPushButton = new QHBoxLayout;
    HLayoutPushButton->addStretch();    // 添加占位
    HLayoutPushButton->addWidget(btnOK);
    HLayoutPushButton->addWidget(btnChancel);
    HLayoutPushButton->addStretch();    // 添加占位
    HLayoutPushButton->addWidget(btnClose);
    HLayoutPushButton->addStretch();    // 添加占位

    // 垂直对其
    QVBoxLayout *VLayout = new QVBoxLayout;
    VLayout->addLayout(HLayoutPlainTextEdit);
    VLayout->addLayout(HLayoutCheckBox);
    VLayout->addLayout(HLayoutRadioButton);
    VLayout->addLayout(HLayoutPushButton);

    // 将控件提交给对话框
    setLayout(VLayout);
}

void Dialog::initSignalSolts()
{
    // 注册按钮事件
    connect(btnOK, SIGNAL(clicked()), this, SLOT(accept()));
    connect(btnChancel, SIGNAL(clicked()), this, SLOT(reject()));
    connect(btnClose, SIGNAL(clicked()), this, SLOT(close()));

    // 注册复选框
    connect(checkBoxUnderline, SIGNAL(clicked(bool)), this, SLOT(on_checkUnderline(bool)));
    connect(checkBoxItalic, SIGNAL(clicked(bool)), this, SLOT(on_checkItalic(bool)));
    connect(checkBoxBold, SIGNAL(clicked(bool)), this, SLOT(on_checkBold(bool)));

    // 注册单选框
    connect(rBtnRed, SIGNAL(clicked()), this, SLOT(on_setTextFontColor()));
    connect(rBtnGreen, SIGNAL(clicked()), this, SLOT(on_setTextFontColor()));
    connect(rBtnBlue, SIGNAL(clicked()), this, SLOT(on_setTextFontColor()));
}

void Dialog::on_checkUnderline(bool bChecked)
{
    QFont font = plainTextEdit->font();
    font.setUnderline(bChecked);
    plainTextEdit->setFont(font);
}

void Dialog::on_checkItalic(bool bChecked)
{
    QFont font = plainTextEdit->font();
    font.setItalic(bChecked);
    plainTextEdit->setFont(font);
}

void Dialog::on_checkBold(bool bChecked)
{
    QFont font = plainTextEdit->font();
    font.setBold(bChecked);
    plainTextEdit->setFont(font);
}

void Dialog::on_setTextFontColor()
{
    QPalette plet = plainTextEdit->palette();
    plet.setColor(QPalette::Text, Qt::black);
    if(rBtnRed->isChecked())
    {
        plet.setColor(QPalette::Text, Qt::red);
    }
    else if (rBtnGreen->isChecked()) {
        plet.setColor(QPalette::Text, Qt::green);
    }
    else if (rBtnBlue->isChecked()) {
        plet.setColor(QPalette::Text, Qt::blue);
    }
    plainTextEdit->setPalette(plet);
}

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    initUI();
    initSignalSolts();
}

Dialog::~Dialog()
{

}

在这里插入图片描述

四、混合方式UI设计

实现一个文本编辑器

在这里插入图片描述

1、创建基于QMainWindow的项目

2、添加资源文件

在这里插入图片描述
在这里插入图片描述
添加前缀
在这里插入图片描述
添加文件(添加前缀之后会出现)
在这里插入图片描述
在这里插入图片描述

3、添加工具栏

Action:可以创建菜单项,工具栏按钮

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加关闭信号和槽
在这里插入图片描述

4、设置文本框布局

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 将编辑框设置为中心布局
    setCentralWidget(ui->plainTextEdit);
}

在这里插入图片描述

5、工具栏和状态栏添加组件(代码编辑UI)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QProgressBar> // 进度条
#include <QLabel>       // 标签
#include <QSpinBox>     // 数值输入框
#include <QFontComboBox>    // 字体选择器

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

private:
    QLabel *fLabCurrFile;
    QProgressBar *progressBar;
    QSpinBox *spinFontSize;
    QFontComboBox *comboxFont;

    void initUI();

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

#include "mainwindow.h"
#include "ui_mainwindow.h"

void MainWindow::initUI()
{
    // 添加状态栏
    fLabCurrFile = new QLabel;
    fLabCurrFile->setMidLineWidth(150); //设置最小宽度
    fLabCurrFile->setText("当前文件:");
    ui->statusBar->addWidget(fLabCurrFile);

    // 进度条
    progressBar = new QProgressBar;
    progressBar->setMinimum(5); //设置最小值
    progressBar->setMaximum(50);    //设置最大值
    progressBar->setValue(ui->plainTextEdit->font().pointSize());   //设置当前值
    ui->statusBar->addWidget(progressBar);

    // 工具栏添加字体大小
    ui->mainToolBar->addWidget(new QLabel("字体大小"));
    spinFontSize = new QSpinBox;
    spinFontSize->setMinimum(5);
    spinFontSize->setMaximum(50);
    ui->mainToolBar->addWidget(spinFontSize);

    // 工具栏添加字体选择器
    ui->mainToolBar->addWidget(new QLabel("字体大小"));
    comboxFont = new QFontComboBox;
    ui->mainToolBar->addWidget(comboxFont);
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 将编辑框设置为中心布局
    initUI();
    setCentralWidget(ui->plainTextEdit);
}

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

在这里插入图片描述

6、添加剪切复制粘贴信号与槽

在这里插入图片描述

7、添加粗体、斜体、下划线的信号与槽

在这里插入图片描述

void MainWindow::on_actBold_triggered(bool checked)
{
    /*
    // 对整个组件生效
    QFont font = ui->plainTextEdit->font();
    font.setBold(checked);
    ui->plainTextEdit->setFont(font);
    */
    // 单独对选中内容
    QTextCharFormat fmt;
    if(checked){
        fmt.setFontWeight(QFont::Bold);
    }
    else {
        fmt.setFontWeight(QFont::Normal);
    }
    ui->plainTextEdit->mergeCurrentCharFormat(fmt);
}

void MainWindow::on_actItalic_triggered(bool checked)
{
    /*
    // 对整个组件生效
    QFont font = ui->plainTextEdit->font();
    font.setItalic(checked);
    ui->plainTextEdit->setFont(font);
    */
    // 单独对选中内容
    QTextCharFormat fmt;
    fmt.setFontItalic(checked);
    ui->plainTextEdit->mergeCurrentCharFormat(fmt);
}

void MainWindow::on_actUnderline_triggered(bool checked)
{
    /*
    // 对整个组件生效
    QFont font = ui->plainTextEdit->font();
    font.setUnderline(checked);
    ui->plainTextEdit->setFont(font);
    */
    // 单独对选中内容
    QTextCharFormat fmt;
    fmt.setFontUnderline(checked);
    ui->plainTextEdit->mergeCurrentCharFormat(fmt);
}

在这里插入图片描述

8、添加:根据文本框内容选中修改工具栏状态

选中文本编辑框,右击选择转到槽。

在这里插入图片描述
选中selectionChanged。
在这里插入图片描述

void MainWindow::on_plainTextEdit_selectionChanged()
{
    QTextCharFormat fmt;

    fmt = ui->plainTextEdit->currentCharFormat();

    ui->actItalic->setChecked(fmt.fontItalic());
    ui->actBold->setChecked(fmt.font().bold());
    ui->actUnderline->setChecked(fmt.fontUnderline());
}

在这里插入图片描述
在这里插入图片描述

9、设置字体大小与字体

void MainWindow::initSignalSlots()
{
    connect(spinFontSize, SIGNAL(valueChanged(int)), this,
            SLOT(on_spinBoxFontSize_valueChanged(int)));
    connect(comboxFont, SIGNAL(currentIndexChanged(const QString&)), this,
            SLOT(on_comboxFont_currentIndexChanged(const QString&)));
}
void MainWindow::on_spinBoxFontSize_valueChanged(int nFontSize)
{
    QTextCharFormat fmt;
    fmt.setFontPointSize(nFontSize);
    ui->plainTextEdit->mergeCurrentCharFormat(fmt);
    progressBar->setValue(nFontSize);
}

void MainWindow::on_comboxFont_currentIndexChanged(const QString &strIndex)
{
    QTextCharFormat fmt;
    fmt.setFontFamily(strIndex);
    ui->plainTextEdit->mergeCurrentCharFormat(fmt);
}

在这里插入图片描述

10、设置应用程序图标

工程文件添加配置项,工程目录添加图片文件。
RC_ICONS = AppIcon.ico

在这里插入图片描述

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt技术是一套强大的跨平台应用程序开发框架,专注于使用C++语言来构建高性能、高可维护性的软件解决方案。自1991年首次推出以来,Qt因其卓越的跨平台能力、丰富的功能集、高效的开发工具和良好的社区支持而广受开发者欢迎。以下是对Qt技术的详细介绍: 核心特性 跨平台性: Qt设计的核心理念是“一次编写,到处运行”。它支持多种操作系统,包括但不限于Windows、macOS、Linux、Android和iOS。通过Qt,开发者可以使用同一套源代码,在不同平台上编译并生成原生外观与体验的应用程序,极大地提高了开发效率和产品一致性。 图形用户界面(GUI)开发: 提供了一个完整的GUI工具箱,包含各种控件(如按钮、文本框、滑块、列表视图等)、布局管理器、样式表支持、动画效果等,帮助开发者快速构建美观、功能丰富的桌面和移动应用界面。Qt Designer是一个可视化界面设计工具,允许通过拖放操作构建UI,所见即所得。 非GUI应用开发: 除了GUI程序,Qt同样适用于开发命令行工具、后台服务、嵌入式系统等非图形化应用。其底层API涵盖了文件处理、线程、网络通信、数据库访问等广泛的功能。 面向对象设计Qt采用面向对象的设计原则,提供了高度模块化的类库,使得代码组织清晰、易于扩展和重用。它遵循MVC(模型-视图-控制器)模式,支持数据驱动的界面设计。 元对象系统与信号槽机制: Qt Meta-Object System(元对象系统)是Qt框架的一个重要特性,它引入了元对象编译器(moc),用于在编译时生成额外的代码以支持对象间通信、反射、动态属性绑定等高级功能。 Signal & Slot机制是Qt中实现对象间事件驱动通信的核心方式。信号代表对象状态变化或事件发生,槽则是响应这些信号的可调用实体。这种松耦合的通信方式简化了异步编程和事件处理。 QML与Qt Quick: QML是一种声明性语言,结合JavaScript,用于快速创建流畅、动态的用户界面。它与Qt Quick框架紧密集成,特别适合开发现代化、触屏友好的应用。 Qt Quick Controls和Qt Quick Dialogs提供了一系列预定义的QML组件,用于构建具有传统桌面风格或现代移动风格的界面元素。同时,Qt Quick也支持自定义控件开发。 多媒体支持: Qt Multimedia模块提供对音频、视频播放、录音、摄像头访问等功能的支持,使得开发多媒体应用程序变得简便。 网络功能: Qt Network模块封装了网络通信相关的API,包括HTTP、FTP、TCP/UDP套接字、SSL加密、DNS查询等,便于开发网络应用和服务。 国际化与本地化: Qt Linguist工具支持应用程序的多语言翻译和本地化工作,确保软件能适应全球市场。 开发工具与生态系统: Qt Creator是一款集成开发环境(IDE),集成了项目管理、代码编辑、调试、版本控制、QML预览等多种功能,为Qt开发提供了无缝的工作流程。 Qt拥有活跃的开发者社区、丰富的文档资源、示例代码库以及商业支持选项,为开发者的学习、问题解决和项目实施提供了坚实后盾。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值