自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 qt使用 barcode scanner

查看系統硬件表,確認條形碼掃描器是鍵盤輸入,還是com口,我的是鍵盤輸入:代碼中重寫 keyevent:void MainWindow::keyPressEvent(QKeyEvent *event){// qDebug()<<event->count(); emit sig_barcode(event->text());}這樣就能讀到barcode scanner的數據了;附加:1 我遇到了,啓動軟件后,可以讀到,但是切換界面后(其中有很多邏輯

2021-10-02 18:24:38 291

原创 Mediator design pattern

Mediator:Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.處理不同物件(類)之間的溝通秩序的模式,這些類之間的關係是平行獨立的

2021-08-19 17:15:34 140

原创 Command design pattern

Command:Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.把請求封裝起來,這樣就可以按照顧客的需要把顧客的請求作爲參數,封裝起來,並且可以撤銷請求;這是一個處理參數的設計模式,也就是原本的參數是固定的,但是現在變成了可變的參數;這個和

2021-08-19 14:07:27 146

原创 設計模式匯總,包含生動的實例

文章結構是:英文原文+個人的理解學習方法:How to Use a Design Pattern Once you’ve picked a design pattern, how do you use it?Here’s a step-by-step approach to applying a design pattern effectively: 1. Read the pattern once through for an overview. Pay particular attention to

2021-08-13 15:26:26 62

原创 設計模式:Adapter

用途:Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.由於接口不一致而導致的情況,可以用adapter處理;常用實例:比如string to int,int to string 的function就屬於這種模式;所以實

2021-08-13 11:46:23 53

原创 c++ qt lambda表達式參數值不一樣的bug

我在一個方法中使用了QTimer和lambda表達式,後來發現傳入的參數的值變了,找了一下,終於知道了bug的原因,錯誤代碼如下:void ModbusManagement::checkResult(Modbus_Order order){ qDebug()<<"check PLC:"; qDebug()<<"order type is :"<<order.order_type<<order.boxOut_id<<order.e

2021-08-11 10:12:21 106

原创 Unity切換Scene

【Assets】中的Scenes文件夾下,右鍵【create】【scene】:【File】【Build Settings】新增當前scene:雙擊打開另一個scene:新增當前scene:任意一個scene的任意一個物件的script中,加入下面代碼:using UnityEngine.SceneManagement;public class gotoScene_NewScene : MonoBehaviour{ // Start is called before the fi

2021-08-02 13:54:10 553

原创 qt 實現配置文件

項目開發的時候,都需要實現配置文件:用於啓動的時候讀取數據;qt中有個方便實現配置文件的接口:QSettings;QString fileName; fileName = QCoreApplication::applicationDirPath(); fileName += "/SetConfigPara.ini"; qDebug()<<fileName; QSettings settingcfg(fileName, QSettings::IniForma

2021-07-07 15:17:10 197

原创 intel realsense 使用代碼

我這邊是有兩個 inter realsense L515的相機,分別有不同的作用,所以需要區分,通過查看源代碼,找到了區分的方法:通過查看工具,會發現不同的相機的serial port不一樣; rs2::config config; config.enable_device("f1062548"); p_.start(config); qDebug()<<"RealsenceManager::Init : "<<p_.get_active_profil

2021-07-02 13:38:10 151

原创 qt client端代碼

.h#ifndef CLIENT_H#define CLIENT_H#include <QObject>#include<QTcpSocket>#include<QThread>#include<QTimer>#include"common.h"class Client : public QObject{ Q_OBJECTpublic: explicit Client(QObject *parent = nullptr

2021-07-01 17:14:42 277

原创 qt server代碼

.h#ifndef SERVER_TEST_H#define SERVER_TEST_H#include <QObject>#include<QTcpServer>#include<QTcpSocket>#include"common.h"class Server_Test : public QObject{ Q_OBJECTpublic: explicit Server_Test(QObject *parent = nullptr

2021-07-01 17:13:07 95

原创 qsocket 無法讀寫

被qsocket卡了一天,bug是無法讀寫,後來發現是因爲多綫程的原因:void Client::Init(){ socket_ = new QTcpSocket(); socket_->connectToHost("127.0.0.1",27015); if(socket_->waitForConnected(1000)) { qDebug()<<"cann't connect server\n";// QThread::

2021-07-01 15:31:06 90

原创 qlabel導致的程序崩潰

Label沒有初始化pixmap的話:QImage name_img = ui->label_store_multi_name->pixmap()->toImage();這樣程序會崩掉;解決方案:if(ui->label_store_multi_name->pixmap() == nullptr) { qDebug()<<"ui->label_store_multi_name has no image"; re

2021-07-01 10:44:03 464

原创 QSqlDatabase: QMYSQL driver not loaded

qt 中 mysql 使用問題:QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers: QIBASE QSQLITE QMARIADB QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7原因:mysql不是開源的了,所以qt就不真正支持mysql了,需要自己安裝driver,有官方的幫助文檔:官方文檔我用的是msys2,直接安裝pkg就可以了:官方包效果如下:...

2021-06-28 15:52:11 181

原创 清空QTableView和QTableWidget

清空QTableView:ui->tableView_store_multi->setModel(table_store_multi_model_);//由於TableView一般使用model,所以直接清空modeltable_store_multi_model_->setRowCount(0);清空QTableWidget://清空内容ui->tableWidget_take_customer_takepage->clearContents();//清空行數

2021-06-23 13:42:06 467

原创 tableview中的勾選

Tableview的點選功能:進入clicked的槽,進行定位和字符判斷,然後修改字符;void MainWindow::on_tableView_store_multi_clicked(const QModelIndex &index){ if(index.isValid()) { if(index.column() == 2) { //qDebug()<<table_store_multi_model_...

2021-06-22 10:20:54 87

原创 如何使用SDK

什麽是lib:library,庫的意思;如果用過cmake的話,就會比較理解lib的含義:比如以下cmake代碼就生成了一個lib:add_library(astar Astar.cc Astar.h CoAstar.cc CoAstar.h PathPlanner.h PathPlanner.cc)install(TARGETS astar DESTINATION lib)install(FILES Astar.h CoAstar.h PathPlanner.h DESTINATION incl

2021-06-08 17:20:18 3184

原创 QLabel 換行

使用’\n’就可以了:ui->label_store_single_showImage->setText(QString(tr("高:")+"%1"+"\n"+tr("長:")+"%2"+"\n"+tr("寬:")+"%3") .arg(height).arg(length).arg(width));

2021-06-08 11:15:36 51

原创 實現自己的std::vector

std::vector可以根據T的類型,自動存儲好一個列表,並有如push_back()等的接口,也重載了[],比如可以vec[0]就可以得到值,當然還有iterator 的部分;這邊僅實現push_back()和[],來做一個簡單的實現,抛磚引玉;.htemplate<typename T>class MyVector{private: struct MyVector_Node { T* node; MyVector_Node* next; };public: My

2021-05-13 16:55:35 59

原创 安卓开发:2天从零开始到实战

前言:因为项目需要在平板上开发一个简易的点餐系统,结合我熟悉c++,linux等条件,在画好点餐系统的流程图和结构图之后,学习用c++开发安卓app的知识之后,就可以实现了;这篇主要介绍我花了2天做到的:最基本的搭建环境和实战开发的时候必备的一些技术1 开发IDE的选择:android studio ;因为需要界面开发,直接使用这个比较方便;这个安装步骤请看我的上一篇:2 c++开发需要的sdk:用c++开发,先看安卓系统结构图:所以c++开发,需要安装NDK;【File】【Settings】【A

2021-04-29 16:51:08 180

原创 android 开发环境部署

配置android的開發編譯和運行的環境;步驟1:下載visual studio 2017步驟2:下載nvidia android code works步驟3:開啓android example:在visual studio中【File】【New Project】【visual c++】【Cross Plantform】【Android】【Native-Activity Application(Android)】;步驟4:編譯:右鍵項目【build】步驟5:運行:運行的步驟比較多,所以下面分步

2021-04-28 11:44:30 50

原创 算法导论-读书笔记

A 分析算法:算法的时间取决于:running time,size of input;Worst-case and average-case analysisrate of growth: 算法inputsize大的时候,效果更好,也是一个好算法的表现B 设计算法:方法1:分而治之Step1:分:分为子问题Step2:治:分到足够细的时候,就可以直接实现了;Step3:结合:用这些算法解决最初的那个问题;C dynamic programingDynamic Programming (D

2021-04-22 17:00:08 250

原创 grpc的封装

grpc的c++封装方法:grpc是什么?要了解grpc之前,先需要了解微服务架构,微服务架构简单来说是一种系统架构方法,本来是用于大型服务器的,作用是什么呢?简单来说:当服务器的某个部分挂掉的时候,其他的部分依然可以运行;这个架构用在软件开发中的时候,就变成了一个系统中,不同的模块,每个模块或者几个模块,分别包装成微服务器;好处是:某个模块需要改动的时候只需要进行内部改动,和与此相关的某些模块的协议需要改动,完全不会影响到其他模块;一般的系统架构图:微服务架构图:grpc是什么?grpc是

2021-04-16 16:41:47 1493 1

原创 c++ 策略模式

#pragma onceclass IStrategy_Test{public: virtual int calculate(int a, int b) = 0;};class Calculate_Add : public IStrategy_Test{ int calculate(int a, int b) override { return a + b; }};class Calculate_Subtract : public IStrategy_Test{ inl

2021-04-13 11:30:14 35

原创 使用mongodb sdk

代碼:#include<mongocxx/client.hpp>#include<mongocxx/instance.hpp>//...mongocxx::instance inst{}; // This should be done only once.mongocxx::client conn{ mongocxx::uri{ "mongodb+srv://<username>:<password>@<cluster-ur

2021-04-07 14:00:20 200

原创 在linux,安裝mongodb sdk

sudo apt-get install zlib1g-dev sudo apt-get install libmongoc-1.0-0sudo apt-get install libbson-1.0sudo apt-get install cmake libssl-dev libsasl2-devwget https://github.com/mongodb/mongo-c-driver/releases/download/1.16.2/mongo-c-driver-1.16.2.tar.gz

2021-04-07 13:36:51 76

原创 qt 未知報錯

原因:emit(xxx);改成:emit sig_xxx(xxx);系統不會顯示語法錯誤,而是訪問錯誤;

2021-03-31 11:11:50 69

原创 快速讀存結構體

std::vector<traffic_car> cars_; std::unordered_map<int,int> car_ids_indexs_;利用了vector的存取方便,同時利用map來快速查詢

2021-03-30 18:49:09 39

原创 堆排序

源代碼,歡迎白嫖StackSort.h:#include<vector>#include<stack>#pragma onceclass StackSort{public: explicit StackSort() {} void Init(std::vector<int> vec_num); std::vector<int> SortBig(int sort_num); std::vector<int> SortSmall

2021-03-30 10:50:31 40

原创 一维数组,转为,二维数组

std::vector<std::vector<int>> make_vec_vec(std::vector<int> vec_list,int column_size){ std::vector<std::vector<int>>vec_result; for (int i = 0; i < vec_list.size(); i = i+column_size) { std::vector<i

2021-03-23 09:50:11 131

原创 CMake Error: The current CMakeCache.txt directory

原因:項目切換了文件夾解決方法:刪掉CMakeCache.txt(在目標文件所在的文件夾),重新config,build,run;

2021-03-19 11:57:16 5108 2

原创 語法問題和算法問題

細節的技術問題分爲:語法問題和算法問題;前者需要多使用,用於試錯,然後才能好好使用;後者需要先自己可以計算,或者知道公式后,才能用代碼實現

2021-03-16 09:35:01 38

原创 编程思维-启章

小弟不才,入行做軟件開發一年左右,剛好對這個話題有新的見解,所以就共享給大家,互勉。 回想一年前入行的時候,被考察的最多的是c++語法,和一些數據結構,和簡單的算法問題等。但最近一次找工作,被問的最多的問題是編程思想和英文能力。我回答編程思想的問題時,第一個想法就是:低耦合,高聚合。實際經驗:第一份工作試用期時,爲了實現客戶端的兩個界面的功能(通訊,數據庫操作,界面),这三个我是整合在一起的,解决bug很混乱,思考逻辑很混乱,修改起来很麻烦,相互牵连,如果问现在的我,这几点最怕什么,那就是怕debug的时

2021-03-06 09:39:52 47

原创 臨時變量的好處

使用臨時變量的好處:便於以後修改,小項目小模塊的時候,修改會非常簡單,儅項目變大,邏輯變複雜的時候,臨時變量的重要性就體現出來了。比如我現在在做調度系統:要調度car,這時我的car結構體肯定要支持延展的,所以,一個函數中要使用car的時候,如果我都是用的car本身的結構的時候,比如car.position,現在我的position是一個int,之後需要改成std::vector的話,就變成要修改多処的代碼,而如果改成臨時變量操作的時候,就只需要修改臨時變量的賦值。...

2021-02-24 10:26:40 57

原创 編程思想

感想:以前寫代碼都是直接上來就打開編輯器,想著怎麽寫各種類或者函數,現在寫代碼都是先打開word,把一些要實現的地方羅列出來,然後用xmind來畫模塊的構成,以及模塊之間通訊的數據,這些理清之後,再開始寫代碼,過程中如果遇到模糊的情況,就重新思考和記錄要點到word文檔,然後update畫的圖,然後依此代碼。所以,現在寫代碼都是先看文檔中的開發計劃,然後看要寫的模塊的xmind圖,對著圖寫代碼。...

2021-02-18 15:19:06 45

原创 QObject::connect: Cannot queue arguments of type ‘QVector<int>‘ (Make sure ‘QVector<int>‘ is registe

使用多綫程傳遞QVector的時候,報錯的解決方案:typedef QVector<int> MyArray;//修該sig和slot: void slot_func_write(const MyArray &); void sig_func_write(const MyArray &);親測可用,如需詳細,歡迎提問。...

2021-02-18 15:17:08 699 2

原创 linux下安裝SDL2

官網下載sourecode的壓縮檔,安裝步驟,解壓指令集合,第一個網址的實例有問題,找不到SDL.h,所以用下一個新的安裝步驟,在root裏面:./configure;make 和make install,跳到根目錄下面,發現我的SDL.h的頭文件在SDL2裏面,所以包含頭文件的時候是<SDL2/SDL.h>,但是編譯的時候顯示:/usr/bin/ld: cannot find -lSDLcollect2: error: ld returned 1 exit status解決:

2021-02-03 11:27:26 549

原创 pthread_create c++ 成員函數

當我想要使用類來封裝server的時候,遇到之前的pthread_create() 接口不能直接使用的情況,這樣必須要把相關的綫程函數設置成static的模式,class C{public: void *hello(void) { std::cout << "Hello, world!" << std::endl; return 0; } static void *hello_helper(void *conte

2021-02-02 10:47:05 94

原创 server,如何使用别人的协议文件,与其他终端或者客户端进行通讯

server,如何使用别人的协议文件,与其他终端或者客户端进行通讯1 server通讯要先定义好自己的端口号,让客户端链接1-1 测试是否连接上了,让自己的server打印连接的ip号和端口号,来确认连接完成。2 根据封包的协议,进行拆包和封包2-1 拆包,包一般分为包头和内容,所以先拆出包头(一般包头会包含内容的size大小),然后根据包头来存储内容。2-2 封包,把自己的内容封成协议需要的包,也是一样,包头加内容即可。最后附上拆包和封包新想出的实现方案:一般协议的包内容都是结构体struc

2021-01-31 15:28:31 136

原创 A星算法,手打源码

#include <iostream>#include <vector>#include <unordered_set>#include <stack>using namespace std;#define MAP_WIDTH 10#define MAP_LENGTH 10#define WEIGHT 10struct Node{ int id; int parent_id; int g, h, f; bool operator&

2021-01-20 13:36:08 263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除