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

网站建设那些公司比较好网站容易出现的问题吗

网站建设那些公司比较好,网站容易出现的问题吗,免费注册商标,政务信息网站建设工作【Qt开发】调试log日志QDebug重定向输出到textEdit等控件#xff08;qInstallMessageHandler回调函数#xff09; 文章目录 Log输出方式qInstallMessageHandler回调函数线程安全textEdit控件附录#xff1a;C语言到C的入门知识点#xff08;主要适用于C语言精通到Qt的C开发…【Qt开发】调试log日志QDebug重定向输出到textEdit等控件qInstallMessageHandler回调函数 文章目录 Log输出方式qInstallMessageHandler回调函数线程安全textEdit控件附录C语言到C的入门知识点主要适用于C语言精通到Qt的C开发入门C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中需要了解的C基础知识namespace输入输出字符串类型class类构造函数和析构函数解析函数类的继承 Log输出方式 Qt有Debug、Warning、Info、Critical、Fatal五种级别的调试信息。 qDebug--------调试信息 qWarning--------警告信息 qInfo--------警告信息 qCritical--------严重错误 qFatal--------致命错误 分别由qDebug、qWarning、qCritical、qFatal等函数进行调用 调用时 与cout用法相同 如 qDebug()timerEvent 1\n;在进行调试时 可以输出到IDE的终端下面 但是不会在窗口中显示 为了输出到窗口 则需要进行重定向 qInstallMessageHandler回调函数 Qt5提供了qInstallMessageHandler函数 用于申请一个回调 函数原型 typedef void (*QtMessageHandler)(QtMsgType, const QMessageLogContext , const QString ); Q_CORE_EXPORT QtMessageHandler qInstallMessageHandler(QtMessageHandler);申请后 每次发生QDebug等数据 都会跳到回调中 我的回调函数如下 void myMessageOutput(QtMsgType type, const QMessageLogContext context, const QString msg) {static QMutex MessageOutput_Mutex;MessageOutput_Mutex.lock();(void)context;QByteArray localMsg msg.toLocal8Bit();//信息分类QString strMsg();switch(type){case QtDebugMsg:strMsg QString(Debug:);break;case QtInfoMsg:strMsg QString(Info:);break;case QtWarningMsg:strMsg QString(Warning:);break;case QtCriticalMsg:strMsg QString(Critical:);break;case QtFatalMsg:strMsg QString(Fatal:);break;default:break;}// 设置输出信息格式QString strDateTime QDateTime::currentDateTime().toString(yyyy-MM-dd hh:mm:ss.zzz);QString strMessage QString(%1 %2 %3).arg(strDateTime,strMsg,localMsg.constData());pw-debug_text-insertPlainText(strMessage);MessageOutput_Mutex.unlock(); }注册方法 qInstallMessageHandler(myMessageOutput);几种传参就是类型、位置和消息内容 context位置包括被调用时的文件名、函数名称、行数等等 由于我是直接用Qt Creator直接生成的工程 MainWindow定义的w在mian函数中调用 所以需要用一个全局变量转一下 MainWindow *pw nullptr; int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;pww;w.show();return a.exec(); } 消息处理后用 pw-debug_text-insertPlainText(strMessage);发送到textEdit控件 最终效果 线程安全 如果你用到了多线程 则可能多次调用QDebug 造成多次回调 则为了安全 加了一个互斥锁 static QMutex MessageOutput_Mutex;MessageOutput_Mutex.lock();和 MessageOutput_Mutex.unlock();textEdit控件 定义就不讲了 我是用ui直接设计的 但设计的出来都是私有成员 所以得加个公有成员指向他 QTextEdit *debug_text; debug_textthis-ui-textEdit_2;可以用函数设置最大行数 debug_text-document()-setMaximumBlockCount(500);另外 在槽函数textChanged()中 加入下拉框置底的配置 void MainWindow::on_textEdit_2_textChanged() {this-ui-textEdit_2-moveCursor(QTextCursor::End); } 附录C语言到C的入门知识点主要适用于C语言精通到Qt的C开发入门 C语言与C的不同 C语言是一门主要是面向工程的语言 C则是面向对象 C语言中 某些功能实现起来较为繁琐 比如结构体定义 一般写作 typedef struct stu_A { }A;也可以写作 typedef struct { }A;但 大括号后面的名称是不可省去的 不过 C的写法就比较简单 除了支持上述写法外 也支持直接声明 typedef struct A { }另外 C是完全支持C语言库和语法的 不过C里面的库也有些很方便的高级功能用法 只不过实现起来可能不如C的速度快 再者 C语言与C的编译流程不一样 C语言没有函数重载 所以给编译器传参就是直接传函数名称 但是C除了传函数名称外 还会穿函数的参数、类型等等 以实现函数重载 C中写C语言代码 上文提到 C可以完全兼容C的写法 但是编译流程也还是不一样 所以如果在编译层面进行C语言代码编译 则通常用以下方法 extern C { ... }表面大括号内的内容用C的方法进行编译 另外 如果还是用C的编译器 但要实现C语言函数 则需要用到C语言的库 在C语言中 我们一般用如下方法导入库 #include stdio.h此方法同样适用于C 但是C可以更方便的写成去掉.h的方式 比如 #include iostream在C中 为了调用C语言的库 可以采用在原库名称前加一个c的方式导入 如 #include cstdio这样就可以使用printf等函数了 甚至比C的std方法更快 C语言到C的知识点 Qt开发中需要了解的C基础知识 namespace C面向对象的特性下诞生的一个名称 表示某个函数、变量在某个集合下 用作namespace 比如 iostream库中的关键字cin在std下 则写作std::cin std就是namespace ::表示某空间下的某某 前面是空间名称 后面是变量、函数名称 用using namespace可以告诉编译器以下都用xx名称空间 比如 using namespace std; couta;如果没有告诉编译器所使用的空间名称 则要写成 std::couta;同样 可以自定义某一段代码属于哪个空间 namespace xx { ... }输入输出 在C中 用iostream作为输入输出流的库 #include iostream用cin和cout关键字进行输入和输出 如 using namespace std; int a0; cina; //输入到acouta; //输出a类比scanf和printf 同样 还有一个关键字endl表示换行 cout和cin的传参是不固定的 由编译器自行裁定 字符串类型 在C语言中 常用char *表示字符串 但是在C中 可以直接用string类型 比如 char * s456; string str123;由于cout的特性 这两种字符串都可以直接打印 但如果使用C语言中printf的打印方式时 采用%s方式打印字符串 则不能传入string类型 class类 C的核心就是class 同Python等支持面向对象的语言一样 可以理解成一个支持函数、继承、自动初始化、销毁的结构体 在class类中 有private私有、public公有变量 前者只能内部访问 后者可以外部调用使用 如 class A { public: int a; private: int b; }a可以用A.a的方式方位 b则外部无法访问 构造函数和析构函数解析函数 构造函数可以理解成对类的初始化 反之析构函数则是退出时进行销毁前的函数 两者需要与类的名称相同 析构函数则在前面加一个~表示非 如 class A { public: int a; A(); ~A(); private: int b; }A::A() { ... }A::~A() { ... }构造函数可以定义传参 析构函数则不行 类的继承 如果有两个类A和B 想让A里面包含B 则可以写作继承的写法 继承后 A类的变量可以直接调用B下面的成员 如 class B { int b; } class A: public B { int a; }在定义A后 可以访问到B的成员b 当然 继承也可以私有
http://www.w-s-a.com/news/799246/

相关文章:

  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计
  • 哪些方法可以建设网站做网站失败
  • 龙岗网站建设技术wordpress左右两栏
  • 电子商务网站开发与应用的介绍怎么查询域名是否备案
  • 想做一个自己设计公司的网站怎么做的权威发布型舆情回应
  • 做ppt用的音效网站python基础教程网易
  • 可以做免费广告的网站有哪些做视频赚钱的国外网站
  • 苏州做物流网站电话郑州网站高端网站设计
  • 网站建设音乐插件怎么弄wordpress添加数据库文件
  • 汽车行业做网站福建省第二电力建设公司网站
  • delphi做网站开发商城网站建设价位
  • 网站宣传片3 阐述网站建设的步骤过程 9分
  • 公司网站怎么做站外链接哪里有做胎儿dna亲子鉴定
  • 潍坊做电商的网站建设wordpress 特效主题
  • 做网站和app哪个难公司网上注册系统
  • 关于网站建设外文文献系部网站建设
  • 高端设计网站都有哪些月付网站空间提供商
  • 家政 东莞网站建设优化设计官方电子版
  • 做网站如何使用网页插件上海造价信息网
  • 承德网站制作加盟天津做优化的网站有多少家
  • 北京市保障性住建设投资中心网站首页专业做网站联系电话
  • 镇江网站建设方式优化单页面网站教程
  • 做手机网站公司北京网页设计公司兴田德润实惠
  • 域名申请好了 要怎么做网站百度推广开户渠道
  • 电商网站建设 数商云焦作黄河交通学院
  • 做一个网站成本多少太原网站维护
  • 网站建设制作设计优化怎么制作网页步骤
  • 花都区pc端网站建设画册设计多少钱一页
  • 国外买域名的网站廊坊网站制作网页