DAY13

面试遇到的新知识点

char str[10],只有10个字符的空间,但是只能存储9个字符,最后一个字符用来存储终止符'\0'

strlen只会计算'\n',不会计算'\0'

值传递:

cpp 复制代码
void test2(char * str)
{
    str = "hello\n";
}

int main()
{
    char * str;
    test2(str);
    cout << str;
    return 0;
}

引用传递

cpp 复制代码
void test3(char ** str)
{
    *str = "hello\n";
}

int main()
{
    char * str;
    test3(&str);
    cout << str;
    return 0;
}

只有传变量的地址对变量进行解引用才能够修改变量的值。

空类里面有什么?

默认成员函数

1.默认构造

2.拷贝构造

3.赋值运算符

4.移动构造

5.移动赋值

6.析构函数

关于最近的一些面试感受

明显感觉好多岗位都交叉着QT,别人问我QT我都答不上来,只能说一个信号槽和用QT封装了简单的网页。

感觉拿不出手,得好好钻研QT了,至少能吹的出来。

c++的排序算法,快排,堆排,后面还要继续更新一个归并排序,将这三个排序算法掌握基本是够用了;

池性组件,后面还要更新内存池,连接池之类的。

然后把基本的排序和池性组件理清楚,边开始学QT边写算法题。目前来看回溯算法算是入门了,但是动态规划,贪心算法和单调栈还是不清楚,争取把这些搞掉。今天开始学习QT,历时一个礼拜应该能小有成就吧。

QT

QT Creator的界面介绍

项目的结构

简单的QT程序

复制代码
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    ,lab(new QLabel("hello",this))
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 设置标签的位置
    lab->setGeometry(100,100,200,200);
    // 设置标签的颜色
    lab->setStyleSheet("QLabel{background-color:green;color:red}");
    // 设置字体的大小
    lab->setFont(QFont("楷书",22));
}

信号槽机制

信号(signal)

信号的本质是事件,信号展现方式就是函数。当一个事件发生之后,则发出一个信号(signal)。

槽(slot)

对信号响应的函数

槽与普通函数的区别:

槽函数可以与一个信号关联,当信号被发射的时候,关联的槽函数被自动执行处理

信号与槽关联是使用**QObject::connect()**函数进行实现

connect

sender:发出信号的对象

signal:sender对象的信号

receiver:信号接收者

method:receiver对象的槽函数,当检测到sender信号,receiver对象调用method方法

信号与槽的连接方式

一个信号可以与另一个信号相连

复制代码
// 信号一可以触发信号二的发送
connect(object1,SIGNAL(signal1),object2,SIGNAL(signal1));

同一个信号可以和多个槽相连

复制代码
connect(object1,SIGNAL(signal1),object2,SIGNAL(slot1));
connect(object1,SIGNAL(sIgnal1),object3,SIGNAL(slot2));

同一个槽可以响应多个信号

复制代码
connect(object1,SIGNAL(signal1),object2,SIGNAL(slot1));
connect(object3,SIGNAL(signal3),object2,SIGNAL(slot1));

常用连接方案

复制代码
connect(object1,SIGNAL(signal),object2,SLOT(slot));

实战

计算圆球体积

头文件

头文件(dialog.h)
cpp 复制代码
#ifndef DIALOG_H
#define DIALOG_H
​
#include <QDialog>
// 引入标签,命令按钮
#include<qlabel.h>
#include<qpushbutton.h>
#include<qlineedit.h>
​
class Dialog : public QDialog
{
    Q_OBJECT
​
public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
private:
    QLabel *lab1, *lab2;
    QLineEdit *lEdit;
    QPushButton *pbt;
​
// 设置槽函数
public slots:
    void CalculateCircleV();
};
#endif // DIALOG_H
main.cpp
cpp 复制代码
#include "dialog.h"
#include <QApplication>
​
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    // 设置标题
    w.setWindowTitle("计算圆球体积");
    w.show();
    return a.exec();
}
dialog.cpp
cpp 复制代码
#include "dialog.h"
#include<QGridLayout>
const static double PI=3.1415;
​
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    // 标签一(提示输入)
    lab1 = new QLabel(this);
    lab1->setText("请输入圆球的半径:");
    // 标签二(显示结果)
    lab2 = new QLabel(this);
​
    // 创建一个编辑框空间(专门用于接收用户的输入圆球半径的值)
    lEdit = new QLineEdit(this);
​
    // 创建命令按钮
    pbt = new QPushButton(this);
    pbt->setText(tr("计算圆球体积"));
​
    // 表格布局
    QGridLayout *lay = new QGridLayout(this);
    // 第一行的第一列
    lay->addWidget(lab1,0,0);
    // 第一行的第二列
    lay->addWidget(lEdit,0,1);
    lay->addWidget(lab2,1,0);
    lay->addWidget(pbt,1,1);
​
    // 将编辑框信号与槽函数关联,只要文本发生改变就会调用槽函数
    // connect(lEdit, SIGNAL(textChanged(QString)),this,SLOT(CalculateCircleV()));
    // 将按钮信号与槽函数关联,只有点击按钮,才会调用槽函数
    connect(pbt, SIGNAL(clicked()),this,SLOT(CalculateCircleV()));
​
}
​
Dialog::~Dialog()
{
}
void Dialog::CalculateCircleV()
{
    bool isLoop;
    QString str;
    QString val = lEdit->text();
    int num = val.toInt(&isLoop);
    double result = 4.0/3.0*PI*num*num;
    lab2->setText(str.setNum(result));
}
相关推荐
Lehjy37 分钟前
【C++】继承
c++·学习
zhugedz1 小时前
labview和QT编程
开发语言·qt·labview
Trouvaille ~1 小时前
【C++篇】继承之巅:超越法则束缚,领略面向对象的至臻智慧
开发语言·c++·面试·stl·代码规范·菱形继承·虚拟继承
baiyu331 小时前
C++语言学习(10):《C++程序设计原理与实践》第五章笔记
c++
ya888g1 小时前
蓝桥等级考试C++组18级真题-2023-06-18
c++·蓝桥杯·蓝桥等考
落叶、伤2 小时前
第15届蓝桥杯省赛B组c/c++ 0数字接龙
c语言·c++·蓝桥杯
hjxxlsx2 小时前
介绍C++
开发语言·c++
l13372244932 小时前
C++ 3D冒险游戏开发案例
c++·c
牵牛老人2 小时前
Qt开发技巧(十三)QList插入操作,扩展类型的使用,关于QSS的坑,Qt的延时方法,Qt编译的三种版本,环境搭建多练练,指向Qt源码的报错
开发语言·qt
筱姌3 小时前
牛客:Holding Two,Inverse Pair,Counting Triangles
c++·算法