当前位置: 首页 > news >正文

DAY13

面试遇到的新知识点

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

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

值传递:

void test2(char * str)
{str = "hello\n";
}int main()
{char * str;test2(str);cout << str;return 0;
}

引用传递

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)
#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
#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
#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));
}

http://www.lryc.cn/news/455960.html

相关文章:

  • WPF 自定义用户控件(Content根据加减按钮改变值)
  • CPU、GPU、显卡
  • 深入理解 Django 自定义用户模型
  • 顺序表和链表的区别
  • 系分-数据库总结
  • new Date()解析
  • df 的各种用法 以及与du 的区别
  • 2024年下半年软考准考证什么时候打印?
  • 企业安全运行与维护(Enterprise Security Operation and Maintenance)
  • 每日“亿“题 东方博宜OJ 1424-自然数的分解
  • 初识Linux · 文件(1)
  • 【MYSQL】mysql约束---自增长约束(auto_increment)
  • 基于STM32设计的智能学习台灯(华为云IOT)(238)
  • 网络层协议 --- IP
  • Java虚拟机(JVM)介绍
  • 1000题-计算机网络系统概述
  • Authentication Lab | IP Based Auth Bypass
  • linux中的火墙优化策略
  • GO网络编程(三):海量用户通信系统1:登录功能初步
  • Windows安全加固详解
  • JavaScript函数基础(通俗易懂篇)
  • 云RDS MySQL迁移至本地MySQL
  • 【C++ 11】nullptr 空指针
  • Flutter + Three.js (WebView)实现桌面端3d模型展示和交互
  • 学习日志35
  • http cache-control
  • kubernetes 中的微服务
  • 电脑无法无线投屏的解决办法
  • 【多重循环在Java中的应用】
  • JVM(Java Virtual Machine) 详解