第一个Qt开发实例(一个Push Button按钮和两个Label)【包括如何在QtCreator中创建新工程、代码详解、编译、环境变量配置、测试程序运行等】

目录

  • Qt开发环境QtCreator的安装、配置
  • 在QtCreator中创建新工程
  • 在`Forms→mainwindow.ui`中拖曳出我们要的图形按钮
  • 查看拖曳出按钮后的代码
  • 为`pushButton`这个图形添加回调函数
  • 编译工程
  • 关闭开发板上QT的GUI(选做)
  • 禁止LCD黑屏(选做)
  • 设置Qt运行的环境变量
  • 运行Qt程序
  • 如何让程序在系统启动时运行
  • 附完整源代码
    • mainwindow.ui 中的代码
    • mainwindow.h 中的代码
    • mainwindow.cpp 中的代码
    • main.cpp 中的代码
  • 附编译完成后完整的工程目录

Qt开发环境QtCreator的安装、配置

详情见 https://blog.csdn.net/wenhao_ir/article/details/145367198

在QtCreator中创建新工程

在这里插入图片描述
在这里插入图片描述
然后设置工程的名字和位置:
在这里插入图片描述
上图中点击Next…
我们这里使用qmake进行构建,所以选择qmake:
在这里插入图片描述
上图中继续点击Next…
在这里插入图片描述
这里是设置Qt的C++代码中类的名字和相关文件的名字,这些使用默认的就可以了。

上图中继续点击Next…
在这里插入图片描述
上图是设置语言的转换,不是编译语言的转换哈,就是英语、汉语、法语的那种语言,我们不需要作这个操作,所以继续Next。
在这里插入图片描述
在这里插入图片描述
这里选择在博文 https://blog.csdn.net/wenhao_ir/article/details/145367198 中配置的kit,即 qt_klt_swh_01:
在这里插入图片描述
继续Next…
在这里插入图片描述
然后Finish…
在这里插入图片描述
上面的警告:

Warning: The code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.

不用管,这个警告是由于下面这句代码出现的:

#include <QApplication>

由于目录:

/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/c++

不存在,而导致的。

但我们这里不用管,因为我们后面的代码不会使用头文件#include <QApplication>

Forms→mainwindow.ui中拖曳出我们要的图形按钮

双击文件mainwindow.ui
在这里插入图片描述
在这里插入图片描述
Buttons里拖曳出一个Push Button【按住下图中的Push Button不放往中间拖】
在这里插入图片描述
按住下图中的Push Button不放往中间拖:
在这里插入图片描述
不妨重命名为LED
在这里插入图片描述
左侧图形分类栏往下拉,找到Display Widgets,然后拖曳出两个Label
在这里插入图片描述
在这里插入图片描述

查看拖曳出按钮后的代码

点击下图中的Edit
在这里插入图片描述
然后就可以看到刚才拖曳出的三个图形对应的源文件(xml语法写成):
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>90</x>
      <y>130</y>
      <width>89</width>
      <height>25</height>
     </rect>
    </property>
    <property name="text">
     <string>LED</string>
    </property>
   </widget>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>260</x>
      <y>80</y>
      <width>71</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>TextLabel</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>260</x>
      <y>160</y>
      <width>71</width>
      <height>31</height>
     </rect>
    </property>
    <property name="text">
     <string>TextLabel</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

从这个xml文件中,我们可以看到有三个图形,名字分别为:pushButton、label、label_2。

这里不妨先把文件mainwindow.ui保存一下,快捷键CTRL+S。

然后我们要给pushButton这个图形添加回调函数。

pushButton这个图形添加回调函数

打开 Headers→mainwindow.h
在这里插入图片描述
把下面的代码:

private slots:
    void on_pushButton_clicked();

复制到下面的位置:
在这里插入图片描述
作用是对函数on_pushButton_clicked进行声明,当然是在类MainWindow中进行声明。
其中的关键词slots的作用见我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145421581

上面代码中的Q_OBJECT的解释如下:
Q_OBJECT 是 Qt 中的一个宏,通常出现在声明继承自 QObject 的类中(如 QMainWindow)。它是 Qt 的元对象系统的一部分,用来启用类的信号和槽机制、事件处理等功能。

然后去文件mainwindow.cpp中去实现函数on_pushButton_clicked
在这里插入图片描述
我们在类的外部去定义它,代码如下:

void MainWindow::on_pushButton_clicked()
{
    qDebug()<<"LED clicked";
}

上面的函数 qDebug()需要引入头文件#include <QDebug>,写完后,文件mainwindow.cpp中的完整代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()
{
    qDebug()<<"LED clicked";
}

这段代码就是开头几句不太好理解,那个其实是类的构造函数的初始化列表,详情见 https://blog.csdn.net/wenhao_ir/article/details/145422254
看完上面这篇博文后就可以分析下面的代码了:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

首先要知道这个类的原型其实是定义在Headers→mainwindow.h中的,其完整定义如下:

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE


class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

上面代码中的Q_OBJECT的解释如下:
Q_OBJECT 是 Qt 中的一个宏,通常出现在声明继承自 QObject 的类中(如 QMainWindow)。它是 Qt 的元对象系统的一部分,用来启用类的信号和槽机制、事件处理等功能。

Ui是一个命名空间,这个在以前使用OpenCV时已经比较熟悉了。

回到对下面代码的分析:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

这是在类MainWindow的声明外定义类MainWindow的构造函数,它的作用是初始化 MainWindow 界面。我们来详细解析其中的语法和逻辑:

这段代码是 MainWindow 类的 构造函数,它的作用是初始化 MainWindow 界面。我们来详细解析其中的语法和逻辑:


1. MainWindow::MainWindow(QWidget *parent)

  • MainWindow 是类的构造函数,MainWindow(QWidget *parent) 表示它可以接收一个 QWidget *parent 指针,默认情况下,这个 parent 可能为空(即 nullptr)。
  • parent 参数用于 Qt 的 父子对象机制,确保在销毁 parent 时,其子对象(即 MainWindow 的实例)也会被自动销毁,避免内存泄漏。

2. QMainWindow(parent)

  • 这个是 初始化列表中的一项内容,关于初始化列表的详细介绍见博文 https://blog.csdn.net/wenhao_ir/article/details/145422254
  • :QMainWindow(parent) 调用了 QMainWindow 的构造函数,并将 parent 传递给它。
  • QMainWindowMainWindow 的基类,这样可以正确初始化 QMainWindow 的内部成员,使 MainWindow 继承窗口管理的功能。

3. ui(new Ui::MainWindow)

  • 这个也是 初始化列表中的一项内容,关于初始化列表的详细介绍见博文 https://blog.csdn.net/wenhao_ir/article/details/145422254
  • ui 是一个指向 Ui::MainWindow 的指针【Ui:是一个命名空间】,通过 new Ui::MainWindow 在堆上创建 UI 界面对象(ui 由 Qt Designer 生成)。
  • 这里 Ui::MainWindow 负责界面元素的管理,比如按钮、标签、文本框等。

4. ui->setupUi(this);

  • setupUi(this) 这个函数由 Qt Designer 生成,它的作用是:
    • ui 设计的界面组件添加到 MainWindow 界面上
    • 自动连接 Qt Designer 里设定的信号和槽(如果使用了 Qt 的自动连接机制)。
    • 初始化 UI 控件,比如设置按钮的名称、默认状态等。

小结
该构造函数的作用是:

  1. 调用基类 QMainWindow 的构造函数,确保 MainWindow 作为窗口正确初始化。
  2. 创建 Ui::MainWindow 实例,用于管理 UI 界面。
  3. 调用 setupUi(this);,设置 UI 界面元素,使其在 MainWindow 窗口上可见。

你可以理解成:

  • QMainWindow(parent) 负责窗口管理;
  • ui(new Ui::MainWindow) 负责界面管理;
  • ui->setupUi(this) 负责把界面元素加载到 MainWindow 中。

这样 MainWindow 才能正确显示界面,并响应用户操作。

编译工程

在这里插入图片描述
编译的时候右下角会提示编译进度。
在这里插入图片描述

有两个警告不用管(因为不是语法上的错,只是配置上的一点瑕疵):
在这里插入图片描述
编译出的结果在工程目录中,具体如下:
在这里插入图片描述
在这里插入图片描述
上图中的test_01就是生成的可执行程序。
我们可以按照博文 https://blog.csdn.net/wenhao_ir/article/details/144651612 的方法查看下它是不是运行于ARM架构上的可执行文件,这样可以检查我们的gcc编译器是否配置正确。

file /home/book/Qt_project/Q001_test_01/build-test_01-qt_kit_swh_01-Debug/test_01

运行结果如下:

/test_01: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 4.9.0, not stripped

从中可以看出,它是ARM架构的,并且需要动态链接库的支持,所以需要检查开发板上有没有配置Qt运行环境,我在博文 https://blog.csdn.net/wenhao_ir/article/details/145367198 【搜索“那么如何判断开发板上有没有配置Qt运行环境呢”】中已经检查过了。

test_01放到NFS文件系统的目录中:
在这里插入图片描述

关闭开发板上QT的GUI(选做)

注意:后来我发现其实这一步并不需要。没有这一步测试程序同样能正常运行并且显示出测试程序绘制GUI界面
注意:后来我发现其实这一步并不需要。没有这一步测试程序同样能正常运行并且显示出测试程序绘制GUI界面
注意:后来我发现其实这一步并不需要。没有这一步测试程序同样能正常运行并且显示出测试程序绘制GUI界面
打开串口终端→打开开发板

参考博文 https://blog.csdn.net/wenhao_ir/article/details/144591685 用一次性有效的方法(即不是永久有效的方法)关掉自带的QT的GUI界面。

这里用一次性的方法,即不是永久有效的方法:
执行下面这条命令:

/etc/init.d/S99myirhmi2 stop

执行完成后再用手去操作屏幕上的UI界面,UI界面就没有任何反应了,说明QT的GUI界面被关掉了。

禁止LCD黑屏(选做)

注意:后来我发现其实这一步并不一定需要,因为很多时候我们的测试时间都是比较短的。
注意:后来我发现其实这一步并不一定需要,因为很多时候我们的测试时间都是比较短的。
注意:后来我发现其实这一步并不一定需要,因为很多时候我们的测试时间都是比较短的。
关闭开发析上QT的GUI后,还需要禁止LCD黑屏,否则过一会儿LCD会黑屏,用下面的命令实现:

echo -e "\033[9;0]" > /dev/tty0

这条命令的详细解释见 https://blog.csdn.net/wenhao_ir/article/details/145431203

设置Qt运行的环境变量

export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=/usr/lib/fonts/

上面三条命令的详细解释见 https://blog.csdn.net/wenhao_ir/article/details/145433648 【这篇博文中包含第1条命令生效的必要条件,还包括如果让三条命令一直有效的方法,可以看一下。】

运行Qt程序

挂载网络文件系统

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

然后运行我们编译出的Qt测试程序:

注意:运行前请确保Qt运行的环境变量设置好了。
注意:运行前请确保Qt运行的环境变量设置好了。

/mnt/qt_test01/test_01

运行结果如下:
在这里插入图片描述
提示先不用管,这是正常的,教程视频中也有这样的提示。

同时,屏幕上也出现了我们用Qt绘制的界面:
在这里插入图片描述
然后用手点击LED按钮…
在这里插入图片描述
发现每点击一次就打印出一次字符串“LED clicked”,这样测试就成功了。

如何让程序在系统启动时运行

参考:博文 https://blog.csdn.net/wenhao_ir/article/details/144591685 【查看“永久有效的关掉QT的GUI界面最简单的方法”】 和 视频 https://www.bilibili.com/video/BV1HT421k7GW/?spm_id_from=333.1391.0.0&p=7&vd_source=8fb767d1739ea6b35c7177ba909eed36【10分15秒开始看,并且要看把视频看完了再开始做,因为视频中第1次的方法是有问题的。】

附完整源代码

mainwindow.ui 中的代码

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>90</x>
      <y>130</y>
      <width>89</width>
      <height>25</height>
     </rect>
    </property>
    <property name="text">
     <string>LED</string>
    </property>
   </widget>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>260</x>
      <y>80</y>
      <width>71</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>TextLabel</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>260</x>
      <y>160</y>
      <width>71</width>
      <height>31</height>
     </rect>
    </property>
    <property name="text">
     <string>TextLabel</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

mainwindow.h 中的代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp 中的代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()
{
    qDebug()<<"LED clicked";
}

main.cpp 中的代码

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

附编译完成后完整的工程目录

https://pan.baidu.com/s/1yhnmQGpnYl2I-urBsQt5Ew?pwd=88iw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【含文档+PPT+源码】基于大数据的交通流量预测系统

项目介绍 本课程演示的是一款基于Python的图书管理系统的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附…

第二十三章 MySQL锁之表锁

目录 一、概述 二、语法 三、特点 一、概述 表级锁&#xff0c;每次操作锁住整张表。锁定粒度大&#xff0c;发生锁冲突的概率最高&#xff0c;并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。 对于表级锁&#xff0c;主要分为以下三类&#xff1a; 1. 表锁 2. 元数…

在Vue3 + Vite 项目中使用 Tailwind CSS 4.0

文章目录 首先是我的package.json根据官网步骤VS Code安装插件验证是否引入成功参考资料 首先是我的package.json {"name": "aplumweb","private": true,"version": "0.0.0","type": "module","s…

Unity安装教学与相关问题

文章目录 1. 前言2.Unity Hub2.1 下载Unity Hub2.2 安装Unity Hub2.3 注册Unity账号2.4 在Hub上登录账号2.5 在Hub上获取许可证 3. 下载并安装Unity3.1 从Unity Hub下载&#xff08;推荐&#xff09;3.1.1 选择下载版本3.1.2 选择下载组件3.1.3 安装Visual Studio Community 20…

分层模型和应用协议

网络分层模型和应用协议 分层模型 五层网络模型 面对复杂的问题&#xff0c;可以使用分层的方式来简化。 经过不断的演化&#xff0c;网络最终形成了五层模型&#xff1a; 数据的传输 四层、五层、七层 应用层协议 URL URL&#xff08;uniform resource locator&#xff…

Qt常用控件 多元素控件

文章目录 1. QListWidget1.1 常用属性和方法1.2 常用信号1.4 例子1&#xff0c;操作元素 2. QTableWidget2.1 常用属性和方法2.2 常用信号2.3 例子1&#xff0c;创建表格3.1 常用属性和方法3.2 常用信号3.3 例子1&#xff0c;创建树形结构 Qt中提供的多元素控件有: QListWidget…

基于RTOS的STM32游戏机

1.游戏机的主要功能 所有游戏都来着B站JL单片机博主开源 这款游戏机具备存档与继续游戏功能&#xff0c;允许玩家在任何时候退出当前游戏并保存进度&#xff0c;以便日后随时并继续之前的冒险。不仅如此&#xff0c;游戏机还支持多任务处理&#xff0c;玩家可以在退出当前游戏…

动态获取脚本名称作为日志文件的名称

优点 独立性&#xff1a; 每个脚本的日志独立存储&#xff0c;避免日志混杂&#xff0c;便于排查问题。 灵活性&#xff1a; 支持动态获取脚本名称&#xff0c;无需手动指定日志记录器名称。 可扩展性&#xff1a; 可以轻松扩展日志格式、级别、存储路径等功能。 易用性&…

站在JavaScript的视角去看,HTML的DOM和GLTF的Json数据。

很多前端小伙伴没有见过、操作过gltf文件&#xff0c;对非常懵逼&#xff0c;本文从前端小伙伴最熟悉的dom模型为切入口&#xff0c;以类别的方式来学习一下gltf文件。 一、结构与组织形式 HTML DOM&#xff08;文档对象模型&#xff09;&#xff1a; 树形结构&#xff1a;HT…

字节序与Socket编程

字节序 字节序分为大端字节序(Big-Endian) 和小端字节序(Little-Endian)。大端字节序是指一个整 数的最高位字节(23 ~ 31 bit)存储在内存的低地址处,低位字节(0 ~ 7 bit)存储在内存的高地址处;小端字节序则是指整数的高位字节存储在内存的高地址处,而低位字节则存储…

Verilog基础(三):过程

过程(Procedures) - Always块 – 组合逻辑 (Always blocks – Combinational) 由于数字电路是由电线相连的逻辑门组成的&#xff0c;所以任何电路都可以表示为模块和赋值语句的某种组合. 然而&#xff0c;有时这不是描述电路最方便的方法. 两种always block是十分有用的&am…

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程

本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练&#xff0c;数据集是自制图像数据。废话不多说&#xff0c;下面进入训练步骤教程。 注&#xff1a;本人使用linux服务器进行展示&#xff0c;Windows环境大差不差。另外&#xff0…

计算机网络——三种交换技术

目录 电路交换——用于电话网络 电路交换的优点&#xff1a; 电路交换的缺点&#xff1a; 报文交换——用于电报网络 报文交换的优点&#xff1a; 报文交换的缺点&#xff1a; 分组交换——用于现代计算机网络 分组交换的优点&#xff1a; 分组交换的缺点 电路交换——…

Java项目: 基于SpringBoot+mybatis+maven+mysql实现的图书管理系统(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenmysql实现的图书管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观…

Spring PropertyPlaceholderConfigurer多配置问题

本文重点是通过例子代码的debug了解PropertyPlaceholderConfigurer的原理 更多可阅读&#xff1a;placeholderconfigurer文档 了解 目录 测试程序如下PropertyPlaceholderConfigurerplaceholderConfigurer1 & placeholderConfigurer2的执行userbean的BeanDefinition应用Pr…

利用Vue编写一个“计数器”

目录 一、利用Vue编写一个“计数器”的操作方法&#xff1a;二、html文件相关源代码三、CSS文件相关源代码四、代码执行效果展示如下 一、利用Vue编写一个“计数器”的操作方法&#xff1a; 1、data中定义计数器的相关数据&#xff0c;如num、min、max。 2、methods中添加计数…

aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API

aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容&#xff1a; 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API&#xff0c;之后再接收到了http request之后&#xff0c;redirect到lambda进行执行。…

自研有限元软件与ANSYS精度对比-Bar3D2Node三维杆单元模型-央视大裤衩实例

目录 1、“央视大裤衩”自研有限元软件求解 1.1、选择单元类型 1.2、导入“央视大裤衩”工程 1.3、节点坐标定义 1.4、单元连接关系、材料定义 1.5、约束定义 1.6、外载定义 1.7、矩阵求解 1.8、变形云图展示 1.9、节点位移 1.10、单元应力 1.11、节点支反力 2、“…

家政预约小程序12服务详情

目录 1 修改数据源2 创建页面3 搭建轮播图4 搭建基本信息5 显示服务规格6 搭建服务描述7 设置过滤条件总结 我们已经在首页、分类页面显示了服务的列表信息&#xff0c;当点击服务的内容时候需要显示服务的详情信息&#xff0c;本篇介绍一下详情页功能的搭建。 1 修改数据源 在…

Multi-Scale Heterogeneous Text-Attributed Graph Datasets From Diverse Domains

Multi-Scale Heterogeneous Text-Attributed Graph Datasets From Diverse Domains WWW25 推荐指数&#xff1a;#paper/⭐⭐⭐#​ 代码地址&#xff1a;https://github.com/Cloudy1225/HTAG 作者主页&#xff1a;Yunhui Lius Homepage 一句话总结&#xff1a;提出了涵盖多…