qstring

Qt>QString,截取字符

十年热恋 提交于 2020-01-26 07:24:32
QString 截取字符串  函数left()和rigt()类似,都接受一个int类型的参数n,都是对字符串进行截取。  不同之处在于,left()函数从左侧截取n个字符,而right()从右侧开始截取。 QString x = "Pineapple" ; QString y = x . left ( 4 ) ; // y == "Pine" 来源: CSDN 作者: arize 链接: https://blog.csdn.net/qq_42069216/article/details/103995324

Getting Sha1 hash from QString

我是研究僧i 提交于 2020-01-25 06:24:10
问题 In my Qt5.6.1 program, I have to get a Sha-1 hash from QString, but I get incorrect result. I'm trying to use QCryptographicHash library. QString str = "ABCDEFGH"; QString hash = QString::fromStdString(QCryptographicHash::hash(str.toStdString().c_str(), QCryptographicHash::Sha1).toStdString()); // hash == "?^??[?\u0000??v??\u0015??.b??v" What should I change in that case? 回答1: I think this answer will be useful for you it is for md5 How to create MD5 hash in Qt? instead of str.toStdString().c

Day02_Qt消息机制与事件 (下)

眉间皱痕 提交于 2020-01-25 00:42:08
在之前的程序中已经使用过事件,例如在Qt程序的main()函数中创建一个应用对象QApplication,然后调用它的exec()函数,该exec()函数就是开始Qt的事件循环,在执行exec()函数之后,程序就会进入事件循环来监听应用程序的事件。当事件发生时,Qt将创建一个事件对象,Qt中所有事件都继承于QEvent,在事件对象创建完毕后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是根据事件对象的类型分派给特定的事件处理函数(Event handler)。 事件处理函数为protected类型,为虚函数,举例: 新建工程,基类为widget,在ui界面中添加label标签: 之后在工程界面添加类文件,由于是添加Label的槽函数,而文件基类中没有Label基类,所以新建的文件基类选为QWidget,之后在生成的mylabel.h与myabel.cpp文件中将基类改为QLabel,.h与.cpp文件如图所示: #ifndef MYLABEL_H #define MYLABEL_H #include <QLabel> class MyLabel : public QLabel { Q_OBJECT public: explicit MyLabel(QWidget *parent = 0); protected: //鼠标按下事件

Qt的安装与配置问题

柔情痞子 提交于 2020-01-24 22:43:36
12.qtcreator配置 1.打开 tools->options 选择Build&Run 2.增加Compilers(编译器) 点击Add选择GCC 然后点击Browse选择g++ /home/csgec/software/arm-2014.05/bin/arm-none-linux-gnueabi-g++ 选择完成点Apply 3.增加Qt版本 选择Qt Versions 点击Add 选择/usr/local/qtlib5.6.0/bin/qmake 选择完成点击Apply 4.增加工具包 选择Kits 点击Add 修改Complier为第2步设置的 修改Qt version为第3步设置的 Name改为Qt5.6.0-ARM 完成后点击Apply and OK 集成的QT及QT Creator安装比较easy,本文介绍的是QT和QT Create独立安装的方法,当然,也不是很难。 首先说明一下:QT是一个类库,QTCreator是一个框架。要使用QTCreator这个框架必须先把QT的平台搭建好。这个平台需要什么呢?主要需要以下几样:QT(QT库每个版本都有些许变化,可以根据自己需要选择版本,这里的个人需要并不是指功能,而是指你可以选择的教学资源,你有本QT4的书,最好就选择QT4的库,当然,你非要选择QT5也是可以的啦,这里只是建议),编译器(这里主要有两种

Qt Log4qt实现的日志记录

戏子无情 提交于 2020-01-23 00:59:24
0. 前言 很久没有更新博客, 现在转Qt方向, 重新开始写代码, 博客也不能落下, 每天的学习坚持记录在这里. Log4qt 是一个日志记录的第三方库, 可以实现debug, error, info, warn 四种日志类型的输出, 使用也很方便. log4qt: https://sourceforge.net/projects/log4qt/files/ 下载后将lo4qt文档导入项目即可 log封装类是用的红模仿博主的, 感谢分享 此案例是在qt5下实现的, qt4的等以后再加 1. 实现效果 在build目录下会生成log文件夹, 有四个txt文件 在程序中调用API即可, info 的函数如下调用 Log::instance()->info("信息测试日志系统当中..."); 2. 运行环境 win10 qt5.14.0 3. 目录结构 4. 源码编译 main.cpp #include <QCoreApplication> #include <QTextCodec> #include <QThread> #include "log.h" #include "define.h" using namespace Log4Qt; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QThread

Qt Quick快速入门之qml与C++交互

纵饮孤独 提交于 2020-01-20 20:44:50
  C++中使用qml对象,直接使用findChild获取qml对象,然后调用setProperty方法设置属性,当然必须在加载qml之后才能使用,不然findChild找不到对象,用法如下。 engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); QObject * text_Msg = engine.rootObjects()[0]->findChild<QObject*>("text_Msg"); text_Msg->setProperty("color","red");     qml使用C++对象,这也是Qt中Model/View的实现方法,下面是一个例子。   首先,类需要继承自QObejct class User:public QObject { Q_OBJECT Q_PROPERTY(QString Name READ Name WRITE setName NOTIFY NameChanged) Q_PROPERTY(int Age READ Age WRITE setAge NOTIFY AgeChanged) Q_PROPERTY(QString Message READ Message WRITE setMessage NOTIFY MessageChanged) public: User(); User

十、Qt之MD5加密

ぐ巨炮叔叔 提交于 2020-01-19 16:29:08
案例 /** * @brief QDlgLogin::encrypt 字符串 MD5 加密 */ QString QDlgLogin :: encrypt ( const QString & str ) { QByteArray byteArray ; byteArray . append ( str ) ; //MD5加密 QCryptographicHash hash ( QCryptographicHash :: Md5 ) ; hash . addData ( byteArray ) ; //返回最终的散列值 QByteArray resultArray = hash . result ( ) ; //转换为16进制字符串 QString md5 = resultArray . toHex ( ) ; return md5 ; } QCryptographicHash 创建时需要指定一种加密算法,加密算法变量是枚举类型 QCryptographicHash::Algorithm ,常用的常量值有 QCryptographicHash::Md4 , QCryptographicHash::Md5 , QCryptographicHash::Sha512 等。 QCryptographicHash 只提供了加密功能,没有提供解密功能。 来源: CSDN 作者: 咸鱼最牛逼 链接

Qt 学习之路 2(5):自定义信号槽

亡梦爱人 提交于 2020-01-18 22:00:31
Home / Qt 学习之路 2 / Qt 学习之路 2(5):自定义信号槽 Qt 学习之路 2(5):自定义信号槽 豆子 2012年8月24日 Qt 学习之路 2 131条评论 上一节我们详细分析了 connect() 函数。使用 connect() 可以让我们连接系统提供的信号和槽。但是,Qt 的信号槽机制并不仅仅是使用系统提供的那部分,还会允许我们自己设计自己的信号和槽。这也是 Qt 框架的设计思路之一,用于我们设计解耦的程序。本节将讲解如何在自己的程序中自定义信号槽。 信号槽不是 GUI 模块提供的,而是 Qt 核心特性之一。因此,我们可以在普通的控制台程序使用信号槽。 经典的观察者模式在讲解举例的时候通常会举报纸和订阅者的例子。有一个报纸类 Newspaper ,有一个订阅者类 Subscriber 。 Subscriber 可以订阅 Newspaper 。这样,当 Newspaper 有了新的内容的时候, Subscriber 可以立即得到通知。在这个例子中,观察者是 Subscriber ,被观察者是 Newspaper 。在经典的实现代码中,观察者会将自身注册到被观察者的一个容器中(比如 subscriber.registerTo(newspaper) )。被观察者发生了任何变化的时候,会主动遍历这个容器,依次通知各个观察者( newspaper

QString to char* conversion

烈酒焚心 提交于 2020-01-18 07:06:43
问题 I was trying to convert a QString to char* type by the following methods, but they don't seem to work. //QLineEdit *line=new QLineEdit();{just to describe what is line here} QString temp=line->text(); char *str=(char *)malloc(10); QByteArray ba=temp.toLatin1(); strcpy(str,ba.data()); Can you elaborate the possible flaw with this method, or give an alternative method? 回答1: Well, the Qt FAQ says: int main(int argc, char **argv) { QApplication app(argc, argv); QString str1 = "Test"; QByteArray

Qt Creator 中文乱码问题

我与影子孤独终老i 提交于 2020-01-17 03:24:28
一、 Qt 4 乱码问题 解决方案 1. 在Qt 中 快捷菜单选项功能中   Edit(编辑) --> Select Encoding...(选择编码)   选择载入(显示)编码和储存编码,要解决中文乱码问题,选择 GB2312和UTF-8常用编码方式 就可以 2.在 Qt 快捷菜单选项中依次选择   Tools --> Options --> Text Editor --> Behavior --> File Encodings   选择默认编码方式 UTF-8 或 GBK(gbk) 字符集 3. 在(main.cpp )代码中 #include <QTextCodec> QTextCodec *codec = QTextCodec::codecForName("utf8"); //GBK gbk QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); 二、Qt 5 乱码问题 解决方案: 由于 Qt 5 中移除了 <QTextCodec> 中一些函数 所以就不能像Qt 4 版本样解决 但是在QString 类中 1. 有个静态字符转码函数 QString::fromLocal8Bit --> 转码成Unicode