QT 笔记3 | Qt设计师使用 Qt创造器使用

2023-05-16

六、 Qt设计师使用(designer)

案例1:使用设计师重构加法计算器

1 创建工程目录
mkdir Calculator2
2 进入工程目录,执行“designer”启动设计师
1)在新建窗体界面,选择模板(父窗口):“Dialog without Buttons”
2)在设计师界面中完成ui设计
–》从“Widget Box”里面找到需要使用控件,拖拽到父窗口上面
PushButton(1个) LineEdit(3个) Label(1个)
–》设置父窗口和每个控件的属性
父窗口(QDialog):
objectName(对象名):CalculatorDialog
注:将来会根据父窗口的对象名生成一个名字相同类,包含在设计师完成的所有代码
font(字体):点大小(20)
windowTitle(标题):加法计算器
左操作数(QLineEdit)
objectName:m_editX
alignment:水平(AlignRight)
右操作数(QLineEdit)
objectName:m_editY
alignment:水平(AlignRight)
显示结果(QLineEdit)
objectName:m_editZ
alignment:水平(AlignRight)
readOnly(只读):勾选√
加号标签:
objectName:m_label
text:"+"
等号按钮:
objectName:m_button
enabled:去掉勾选√(禁用)
text:"="
–》调整父窗口和控件的大小和位置
方法1:鼠标拖拽
方法2:键盘,调整位置(方向键、ctrl+方向键) 调整大小(shitf+方向键、ctrl+shift+方向键)
方法3:设置geometry属性,调整位置(x,y) 大小(宽度,高度)
方法4:使用布局器自动调整 //推荐
–》窗体预览
–》保存(ctrl+s),指定文件名“CalculatorDialog.ui”
–》关闭,最终在工程目录下得到一个"CalculatorDialog.ui"文件

3 使用界面编辑器(uic),将“CalculatorDialog.ui(xml)”转换为“ui_CalculatorDialog.h(c++)”
1)转换命令
uic CalculatorDialog.ui -o ui_CalculatorDialog.h
2)转换后“ui_CalculatorDialog.h”文件内容
class Ui_CalculatorDialog{
public:
图形控件相关对象指针声明;
void setupUi(QDialog*){//界面初始化
创建图形控件、属性设置…
}
};
namespace Ui{
class CalculatorDialog:public Ui_CalculatorDialog{};
}
注:Ui名字空间的子类(Ui::CalculatorDialog)和上面基类(Ui_CalculatorDialog)相同

4 使用“ui_CalculatorDialog.h”文件,复用里面代码方法
1)方法1:继承
class MyClass:public Ui::CalculatorDialog{
//将界面相关代码继承过来直接使用
};
2)方法2:组合
class MyClass{
public:
MyClass():ui(new Ui::CalculatorDialog){}
private:
//通过“ui->”访问和界面相关代码
Ui:: CalculatorDialog* ui;
};
5 编写代码、构建、测试
1)继承方式,参考Calculator2.
ui_CalculatorDialog.h

/********************************************************************************
** Form generated from reading UI file 'CalculatorDialog.ui'
**
** Created by: Qt User Interface Compiler version 5.4.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_CALCULATORDIALOG_H
#define UI_CALCULATORDIALOG_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QDialog>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>

QT_BEGIN_NAMESPACE

class Ui_CalculatorDialog
{
public:
    QHBoxLayout *horizontalLayout;
    QLineEdit *m_editX;
    QLabel *m_label;
    QLineEdit *m_editY;
    QPushButton *m_button;
    QLineEdit *m_editZ;

    void setupUi(QDialog *CalculatorDialog)
    {
        if (CalculatorDialog->objectName().isEmpty())
            CalculatorDialog->setObjectName(QStringLiteral("CalculatorDialog"));
        CalculatorDialog->resize(535, 150);
        QFont font;
        font.setPointSize(20);
        font.setBold(false);
        font.setWeight(50);
        CalculatorDialog->setFont(font);
        CalculatorDialog->setAcceptDrops(false);
        horizontalLayout = new QHBoxLayout(CalculatorDialog);
        horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
        m_editX = new QLineEdit(CalculatorDialog);
        m_editX->setObjectName(QStringLiteral("m_editX"));
        m_editX->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);

        horizontalLayout->addWidget(m_editX);

        m_label = new QLabel(CalculatorDialog);
        m_label->setObjectName(QStringLiteral("m_label"));

        horizontalLayout->addWidget(m_label);

        m_editY = new QLineEdit(CalculatorDialog);
        m_editY->setObjectName(QStringLiteral("m_editY"));
        m_editY->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);

        horizontalLayout->addWidget(m_editY);

        m_button = new QPushButton(CalculatorDialog);
        m_button->setObjectName(QStringLiteral("m_button"));
        m_button->setEnabled(false);
        QFont font1;
        font1.setBold(false);
        font1.setWeight(50);
        m_button->setFont(font1);

        horizontalLayout->addWidget(m_button);

        m_editZ = new QLineEdit(CalculatorDialog);
        m_editZ->setObjectName(QStringLiteral("m_editZ"));
        m_editZ->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
        m_editZ->setReadOnly(true);

        horizontalLayout->addWidget(m_editZ);


        retranslateUi(CalculatorDialog);

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

    void retranslateUi(QDialog *CalculatorDialog)
    {
        CalculatorDialog->setWindowTitle(QApplication::translate("CalculatorDialog", "\345\212\240\346\263\225\350\256\241\347\256\227\345\231\250", 0));
        m_label->setText(QApplication::translate("CalculatorDialog", "+", 0));
        m_button->setText(QApplication::translate("CalculatorDialog", "=", 0));
    } // retranslateUi

};

namespace Ui {
    class CalculatorDialog: public Ui_CalculatorDialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_CALCULATORDIALOG_H

CalculatorDialog.h

#ifndef __CALCULATORDIALOG_H
#define __CALCULATORDIALOG_H

#include "ui_CalculatorDialog.h"//继承方式

//自定义计算器窗口类,继承了父窗口,那么当前类就也是一个父窗口
class CalculatorDialog:public QDialog,public Ui::CalculatorDialog{
    Q_OBJECT
public:
    //构造函数
    CalculatorDialog(void);
public slots:
    //恢复按钮为正常状态槽函数
    void enableButton(void);
    //计算和显示结果的槽函数
    void calcClicked(void);
};
#endif//__CALCULATORDIALOG_H

CalculatorDialog.cpp

#include "CalculatorDialog.h"
//构造函数
CalculatorDialog::CalculatorDialog(void){
    //界面初始化
    setupUi(this);
    m_editX->setValidator(new QDoubleValidator(this));//设置验证器
    m_editY->setValidator(new QDoubleValidator(this));//设置验证器

    //信号和槽连接
    //左右操作数文本改变时,发送信号textChanged(QString)
    //注:如果连接的槽函数是当前父窗口中自定义的,那么第三个参数一定
    //是this.
    connect(m_editX,SIGNAL(textChanged(QString)),
            this,SLOT(enableButton(void)));
    connect(m_editY,SIGNAL(textChanged(QString)),
            this,SLOT(enableButton(void)));
    //点击等号按钮,发送信号clicked()
    connect(m_button,SIGNAL(clicked(void)),
            this,SLOT(calcClicked(void)));
}
//恢复按钮为正常状态槽函数
void CalculatorDialog::enableButton(void){
    bool bXOk;//记录左操作数是否输入了有效数据
    bool bYOk;//记录右操作数是否输入了有效数据
    //text():获取文本内容(QString)
    //toDouble():将QString转换为double,参数保存转换是否成功结果
    m_editX->text().toDouble(&bXOk);
    m_editY->text().toDouble(&bYOk);
    //如果左右操作数都输入了有效数据,则恢复按钮为正常可用状态,否则
    //设置为禁用状态.
    m_button->setEnabled(bXOk && bYOk);
}
//计算和显示结果的槽函数
void CalculatorDialog::calcClicked(void){
    //计算相加结果
    double res = m_editX->text().toDouble() + 
                 m_editY->text().toDouble();
    //将数字结果转换为字符串
    //number():将double转换为QString
    QString str = QString::number(res);
    //显示结果
    //setText():设置控件要显示的文本
    m_editZ->setText(str);
}

main.cpp

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

int main(int argc,char** argv){
    QApplication app(argc,argv);
    
    CalculatorDialog dialog;
    dialog.show();

    return app.exec();
}

2)组合方式,参考Calculator2_2.tar.gz
CalculatorDialog.h

#ifndef __CALCULATORDIALOG_H
#define __CALCULATORDIALOG_H

#include "ui_CalculatorDialog.h"//组合方式

//自定义计算器窗口类,继承了父窗口,那么当前类就也是一个父窗口
class CalculatorDialog:public QDialog{
    Q_OBJECT
public:
    //构造函数
    CalculatorDialog(void);
    //析构函数
    ~CalculatorDialog(void);
public slots:
    //恢复按钮为正常状态槽函数
    void enableButton(void);
    //计算和显示结果的槽函数
    void calcClicked(void);
private:
    //将来通过"ui->"访问和界面相关代码
    Ui::CalculatorDialog* ui;
};
#endif//__CALCULATORDIALOG_H

CalculatorDialog.cpp

#include "CalculatorDialog.h"
//构造函数
CalculatorDialog::CalculatorDialog(void)
    :ui(new Ui::CalculatorDialog){
    //ui = new Ui::CalculatorDialog;
    //界面初始化
    ui->setupUi(this);
    ui->m_editX->setValidator(new QDoubleValidator(this));//设置验证器
    ui->m_editY->setValidator(new QDoubleValidator(this));//设置验证器
    //信号和槽连接
    //左右操作数文本改变时,发送信号textChanged(QString)
    //注:如果连接的槽函数是当前父窗口中自定义的,那么第三个参数一定
    //是this.
    connect(ui->m_editX,SIGNAL(textChanged(QString)),
            this,SLOT(enableButton(void)));
    connect(ui->m_editY,SIGNAL(textChanged(QString)),
            this,SLOT(enableButton(void)));
    //点击等号按钮,发送信号clicked()
    connect(ui->m_button,SIGNAL(clicked(void)),
            this,SLOT(calcClicked(void)));
}
CalculatorDialog::~CalculatorDialog(void){
    delete ui;
}
//恢复按钮为正常状态槽函数
void CalculatorDialog::enableButton(void){
    bool bXOk;//记录左操作数是否输入了有效数据
    bool bYOk;//记录右操作数是否输入了有效数据
    //text():获取文本内容(QString)
    //toDouble():将QString转换为double,参数保存转换是否成功结果
    ui->m_editX->text().toDouble(&bXOk);
    ui->m_editY->text().toDouble(&bYOk);
    //如果左右操作数都输入了有效数据,则恢复按钮为正常可用状态,否则
    //设置为禁用状态.
    ui->m_button->setEnabled(bXOk && bYOk);
}
//计算和显示结果的槽函数
void CalculatorDialog::calcClicked(void){
    //计算相加结果
    double res = ui->m_editX->text().toDouble() + 
                 ui->m_editY->text().toDouble();
    //将数字结果转换为字符串
    //number():将double转换为QString
    QString str = QString::number(res);
    //显示结果
    //setText():设置控件要显示的文本
    ui->m_editZ->setText(str);
}

案例2:登录对话框

1)创建工程目录
mkdir Login
2)进入工程目录,启动设计师,完成ui设计
–》拖拽需要使用控件
Label(2个) LineEdit(2个) ButtonBox(1个)
–》设置属性
父窗口:
objectName:LoginDialog
font:点大小(20)
windowTitle:登录
标签:
objectName:默认
text:“用户名:”、“密码:”
行编辑:
objectName:m_editUserName //用户名输入
objectName:m_editPassword //密码输入
echoMode:password
按钮框:
objectName:m_btnBox
layoutDirection:RightToLeft
–》使用布局器,调整大小和位置
–》保存,指定文件名:“LoginDialog.ui”
3)转换,将ui(xml)文件转换为.h(c++)文件
uic LoginDialog.ui -o ui_LoginDialog.h
4)编码、测试、运行

二 Qt创造器使用(qtcreator)

案例:使用qtcreator再次重构加法计算器
1 在任意目录下执行"qtcreator"启动Qt创造器
2 在“欢迎模式”下点击“New Project”创建新的工程
1)选择工程模板
Application->Qt Widgets Application
2)项目介绍和位置
指定工程名字:Calculator3
指定所在路径:/home/tarena/csd1911/qt/day03
注:将来会自动在指定目录下创建和工程名字一致的工程目录
3)Kit Selection(默认)
4)类信息
选择基类(父窗口):QDialog
指定类名:CalculatorDialog
注:将来会根据类名自动生成相应的源文件
CalculatorDialog.h
CalculatorDialog.cpp
CalculatorDialog.ui
5)项目管理(忽略)
6)完成,默认进入编辑模式

3 在侧边栏,双击“ui”文件,进入设计模式(desigenr),完成界面设计
–》从“Widget Box”里面找到需要使用控件,拖拽到父窗口上面
PushButton(1个) LineEdit(3个) Label(1个)
–》设置父窗口和每个控件的属性
父窗口(QDialog):
objectName(对象名):CalculatorDialog(默认,不要修改!)
font(字体):点大小(20)
windowTitle(标题):加法计算器
左操作数(QLineEdit)
objectName:m_editX
alignment:水平(AlignRight)
右操作数(QLineEdit)
objectName:m_editY
alignment:水平(AlignRight)
显示结果(QLineEdit)
objectName:m_editZ
alignment:水平(AlignRight)
readOnly(只读):勾选√
加号标签:
objectName:m_label
text:"+"
等号按钮:
objectName:m_button
enabled:去掉勾选√(禁用)
text:"="
–》调整父窗口和控件的大小和位置
方法1:鼠标拖拽
方法2:键盘,调整位置(方向键、ctrl+方向键) 调整大小(shitf+方向键、ctrl+shift+方向键)
方法3:设置geometry属性,调整位置(x,y) 大小(宽度,高度)
方法4:使用布局器自动调整 //推荐
–》运行预览(ctrl+r)

4 编码、构建、测试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT 笔记3 | Qt设计师使用 Qt创造器使用 的相关文章

  • 【操作系统】 Operation System 第一章:概述

    各部分总结知识点如下 xff1a 操作系统 Operation System 第一章 xff1a 概述 操作系统 Operation System 第二章 xff1a 操作系统基础操作 操作系统 Operation System 第三章 x
  • 【openCV踩坑日记】人工数据集Synthetic Shapes dataset的生成方法

    1 为什么要介绍这个方法 xff1f 2018年的时候 xff0c D DeTone等人发表了Self Supervised Interest Point Detection and Description xff0c 提出了一种特征提取S
  • 【SLAM】ORB-SLAM3解析——综述(1)

    之前学习VINS和LIO SAM的时候都是代码流 xff0c 不是很重视看论文 xff0c 现在有空学ORB SLAM3了 xff0c 这一次 xff0c 先看一下论文 考虑到边上班边学 xff0c 更新的会比较慢 看完论文之后 xff0c
  • 【SLAM】LVI-SAM解析——综述

    LVI SAM可以认为是LIO SAM和VINS MONO的合体 xff0c 在此基础上的修改不大 github xff1a https github com TixiaoShan LVI SAM paper LVI SAM Tightly
  • 【SLAM】DM-VIO(ros版)安装和论文解读

    1 dm vio的安装 进入官方链接 xff0c 基本上就是按照readme的操作来 xff1a 下载代码 xff1a git clone https github com lukasvst dm vio git 安装gtsam xff1a
  • 【SLAM】SVO2.0编译运行和论文代码解读

    SVO2是我遇到的最难编译的代码了 xff0c 毕竟公开版本怎么能放最好的代码呢 xff0c 搞了快一个星期 xff0c 终于跑起来了 github xff1a GitHub uzh rpg rpg svo pro open 论文 xff1
  • 【工具篇】postman的完全使用,全是干货

    目录 一 x1f347 GET请求 二 x1f348 POST请求 三 x1f349 PUT请求 四 x1f34a DELETE请求 五 x1f34b Headers 六 x1f34c 认证 xff08 1 xff09 基本认证 xff1a
  • GPS全球定位系统构成及原理

    GPS全球定位系统构成及原理 全球定位系统 GPS 是本世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统 其主要目的是为陆 海 空三大领域提供实时 全天候和全球性的导航服务 xff0c 并用于情报收集 核爆监测和应急通讯等一
  • Visual C++设计UDP协议通讯示例

    下载本文源代码 一 绪言 UDP是一种面向非连接 xff0c 不可靠的通讯协议 xff0c 相对于 TCP来说 xff0c 虽然可靠性不及 xff0c 但传输效率较高 所以在网络上仍有很大的用途 这几日需要了解下udp通讯的过程 xff0c
  • 树莓派控制舵机云台

    文章目录 学习记录舵机代码分析 学习记录 手上有一套电赛时候买的舵机云台 扭矩15KG 型号为LD 1501MG 舵机 两个LD 1501MG舵机角度范围都是180度 控制的PWM波周期为20ms 角度与正脉冲宽度映射如下所示 0 5ms
  • jetson nano 编译pyrealsense2 运行t265

    在win10 的环境下 xff0c 安装pyrealsense2 xff0c 只需要简单的pip就可以了 xff0c 没想到在jetson nano下却花了那么多时间和精力 其实解决方案网上都有 xff0c 但是比较零碎 xff0c 只能遇
  • openmv探索_4_AprilTag标记追踪

    原理及代码 AprilTag标记追踪 空间坐标系的建立 以镜头中心为坐标系原点 xff0c 建立空间坐标系 图2 1 空间坐标系 旋转角度 xff08 参考系是上图中的坐标系 xff09 1 初始状态 图3 1 物体摆放的初始位置 上图的
  • Xsens MTi传感器 ROS下配置

    Xsens MTi传感器 ROS 1 概述2 MTI设置 MTmanager3 ROS下信息发布 MTSDK4 找不到设备 xff15 参考链接 xff16 延伸阅读传感器配置节点程序分析经典SLAM 1 概述 主要介绍Ubuntu下对Xs
  • 雷达点云 PointCloud2 格式转换

    雷达点云 sensor msgs PointCloud2 pcl PointCloud 数据格式转换参考代码 官方对点云格式的介绍 xff0c 主要有四种 xff0c sensor msgs PointCloud已经弃用 参考 sensor
  • Gmapping 之安装与配置

    Gmapping 之安装与配置 1 概述2 安装2 1 github仓库 3 运行3 1 运行截图3 2 重采样时的提示信息3 3 tf树 96 rosrun rqt tf tree rqt tf tree 96 3 4 所有的坐标变换信息
  • Gmapping Dropped 100.00% of messages so far 解决办法

    Dropped 100 00 of messages so far解决办法 概述显示tf树正常情况报错情况参考链接Gmapping 概述 运行Gmappping时出现错误提示 xff0c 其他参数 xff1a 话题等都设置正确了 xff0c
  • LOAM SLAM安装与配置

    LOAM SLAM安装与配置 1 概述2 安装3 运行4 结果5 其他6 参考链接 1 概述 简单介绍LOAM SLAM的安装与配置 xff0c 希望能帮助大家 xff0c 同时供自己以后参考 2 安装 运行LOAM需要PCL等库支持 xf
  • 什么是MSB、LSB,什么是大端、小端,区别是什么?

    MSB是Most Significant Bit的缩写 xff0c 最高有效位 在二进制数中 xff0c MSB是最高加权位 与十进制数字中最左边的一位类似 通常 xff0c MSB位于二进制数的最左侧 xff0c LSB位于二进制数的最右
  • ROS报错 cant locate node 解决办法

    ROS报错 can 39 t locate node 解决办法 1 概述2 原因3 解决办法4 其他 1 概述 ROS突然出现不能运行节点的问题 xff0c 这里简单介绍一下自己的解决办法 这个方法还是有缺陷 xff0c 更新方法在ROS编
  • ubuntu 开机后 按键 鼠标不能用

    ubuntu 开机后 按键 鼠标不能用 1 现象2 解决办法3 参考链接 1 现象 版本ubuntu 1804安装bumblebee后 xff0c 重启机器出现不能使用鼠标 键盘的现象 xff0c 具体点就是 xff0c 只有开机后的桌面显

随机推荐

  • 相机标定之使用ROS节点程序

    相机标定之使用ROS节点程序 1 概述2 准备3 步骤4 相关链接 1 概述 简单介绍如何使用ROS节点程序进行针孔模型相机标定的步骤 xff0c 供自己以后参考 xff0c 同时希望给大家带来帮助 2 准备 提前准备好棋盘格并打印出来 x
  • 相机标定之使用Matlab工具箱

    相机标定之使用Matlab工具箱 1 概述2 准备3 步骤4 相关链接 1 概述 简单介绍如何使用Matlab进行针孔模型相机标定的步骤 xff0c 供自己以后参考 xff0c 同时希望给大家带来帮助 2 准备 提前准备好棋盘格并打印出来
  • QT安装教程

    QT安装教程 1 概述2 下载安装2 1 下载2 2 安装2 3 安装配置其他环境2 4 安装成功2 5 问题及解决 3 参考链接 1 概述 简单介绍如何在Ubuntu下安装QT xff0c 希望能够帮助大家 xff0c 同时给自己一个参考
  • C++面向过程

    参考文档 xff1a C 43 43 教程 C 43 43 简介 概述 C 43 43 是一种静态类型的 编译式的 通用的 大小写敏感的 不规则的编程语言 xff0c 支持过程化编程 面向对象编程和泛型编程 C 43 43 是 C 的一个超
  • vector 指针 的指针

    vector 不能用指针 xff0c 用指针 xff0c push back会报错 xff0c size 也不对 vector本身用对象 xff0c 内容 简化为A 可以用指针 xff0c 当指针对象中还有指针B时 xff0c 就要用new
  • cmake find_package opencv 找不到

    目录 cmakelist设置方法ok 环境变量设置方法ok linux写法 cmakelists txt完整示例 find opencv lib find package OpenCV REQUIRED NO MODULE should b
  • liveplayer

    npm i 64 liveqing liveplayer S lt template gt lt div class 61 34 live player 34 gt lt div style 61 34 width 640px height
  • DLT algorithm needs at least 6 points for pose estimation from 3D-2D point correspondences. (expecte

    DLT algorithm needs at least 6 points for pose estimation from 3D 2D point correspondences expected 39 count gt 61 6 39
  • 关于OSD

    OSD的主要实现方法和类型 目前有两种主要的OSD实现方法 xff1a 外部OSD发生器与视频处理器间的叠加合成 xff1b 视频处理器内部 支持OSD xff0c 直接在视频缓存内部叠加OSD信息 外部OSD发生器与视频处理器间的叠加合成
  • RTK使用笔记-千寻CORS模式

    一 千寻CORS模式 与基站 43 接收机1对1相比 xff0c 优点为携带方便 xff0c 也不用考虑10公里移动基站问题 xff1b 缺点为第一千寻CORS模式有自己基站涵盖范围 xff0c 所以需要提前确定好范围 xff08 下文有介
  • c/c++语言实现登陆界面

    C C 43 43 语言实现登陆界面 整体功能介绍 实现一个登陆界面 1 输出一个登陆界面 2 用户名能够实现邮箱验证 xff0c regex库 xff0c 密码要不可见 3 进度条的模拟实现 4 音乐播放 分步实现 1 输出一个登陆界面
  • _getch()函数的介绍

    getch 函数的介绍及实例演示 我们一般所使用的 getchar 函数在读入一个字符时必须按一下 Enter 键 xff0c 该代码才会继续运行 但是 getch 函数读入一个字符时 不用 enter 代码会继续跑 xff1b 最简单使用
  • 嵌入式常见面试题

    嵌入式LINUX常见面试问题总结 声明 xff1a 本文是将常见的面试问题进行汇总 xff0c 但大多数问题也是开发中较为常见的技术盲区 xff01 在此进行了汇总 xff0c 以便后续进行参考 xff01 所有的答案部分是自己编写 xff
  • LINUX基础试题大全(1)

    说明 xff1a 此文章由于题数庞大 xff0c 为方便阅读本人将其分为四篇文章为大家分享 xff01 答案会今后不断进行更新 xff01 LINUX基础试题大全 xff08 1 xff09 填空题题 LINUX基础试题大全 xff08 2
  • C语言 | 深入学习数组

    说明 xff1a 本文主要讨论一维数组 xff0c 适宜程度 xff1a 对C语言初步认识及想深入学习者 1 从编译器角度理解数组 从编译器角度理解来讲 xff0c 数组也是一个变量 xff0c 和普通的变量没有本质的区别 变量的本质指的是
  • C语言 结构体 联合体 | 嵌套使用

    一 简单的实例分析 题目 xff1a 获取0x12345678各个字节 答案 xff1a span class token comment 方法一 span span class token macro property span clas
  • Linux 网络编程笔记3 | 内存 系统调用

    七 内存 1 虚拟内存 物理内存 半导体内存和换页文件 虚拟内存 xff1a 地址空间 xff0c 虚拟的存储区域 xff0c 应用程序所访问的都是虚拟内存 物理内存 xff1a 存储空间 xff0c 实际的存储区域 xff0c 只有系统内
  • 树莓派替代品

    51单片机 转载于 https www cnblogs com wanghuaqiang p 11481958 html
  • C++ 笔记10 | 多态(polymorphic)

    span class token variable eg 实现图形库 xff0c 用于显示各种图形 span span class token variable 图形基类 span span class token punctuation
  • QT 笔记3 | Qt设计师使用 Qt创造器使用

    六 Qt设计师使用 designer 案例1 xff1a 使用设计师重构加法计算器 1 创建工程目录 mkdir Calculator2 2 进入工程目录 xff0c 执行 designer 启动设计师 1 xff09 在新建窗体界面 xf