
Qt
文章平均质量分 68
swartz_lubel
这个作者很懒,什么都没留下…
展开
-
QT中生成字符串md5的方法
QT中,提供了QCryptographicHash类,很方便的实现的字符串到md5/md4/sha1的转换,可以通过两种方法实现: [cpp] view plain copyQString pwd="123456"; QString md5; QByteArray ba,bb; QCryptographicH转载 2017-11-28 10:02:43 · 334 阅读 · 0 评论 -
Qt 翻译文件的加载
翻译文件的加载主要有两部分,一个是自己的,另外一个是qt自带的,可以在qt的安装目录下找到!(qt_zh_CN.qm)一般情况下,我们会把翻译文件都放在一个固定的目录下,下面分享一个接口,指定目录下遍历加载翻译文件!//加载翻译文件bool setTranslator(const QString strPath){ bool bRet = false; if (st原创 2017-01-24 20:11:48 · 1037 阅读 · 0 评论 -
利用QSharedMemory 保证单个程序运行
有的时候我们需要保证用户只能运行一个实例进程,那下面就介绍一下利用Qsharememory来完成这操作!QShareMemory示例如下QLogin::QLogin(QWidget *parent /*= 0*/) : QDialog(parent){ m_sharedMen = new QSharedMemory("SWARTZ 1.0"); 。。。。。。}bool Q原创 2017-01-24 19:51:06 · 1041 阅读 · 1 评论 -
QString 字符编码
QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简单的问题,"中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念。#include #include原创 2017-02-14 09:54:13 · 2303 阅读 · 0 评论 -
Qstring 与tr翻译过来的中文进行比较的问题
一般情况下,我们都会去用tr进行翻译文件,然后去获取按钮的文本,因为有的时候按钮很多,放到一个函数去处理,就需要去判断上面的中文文本(例如action->text())例如:QAction* action = (QAction*)sender();QString name = action->text();int index =0;if(name == QString::fro原创 2017-02-14 09:03:32 · 1967 阅读 · 0 评论 -
qt MVC(一)
mvc是经典的三层结构,将数据,视图和逻辑分离。Qt中的Model/View框架,实现了这个模式。在Qt中这个模式设计到三个类,model类,view类和delegate类。model类保存数据,view负责显示,而delegate负责协调model和view之间的数据edit(编辑)和render(渲染)。模型与视图结构:模型与数据通信,并提供接口 视图从模型中获取数据条目索引 代理原创 2017-02-11 21:46:31 · 1097 阅读 · 0 评论 -
在C++函数中使用__asm int 3和__debugbreak的调试
多进程调试的时候可以用到!int main(){ if(GetAsyncKeyState(VK_SCROLL) { __asm int 3;//或者64bit的时候 使用__debugbreak } ............}这样的话 当启动这个程序的时候 你按住scroll Lock 键的时候原创 2017-03-01 13:52:52 · 2725 阅读 · 0 评论 -
qt widget 窗口句柄的问题
有的时候我们需要通过拖拽选项去播放视频,然后发现我们创建的那个widget没有窗口句柄,使用spy++也不能正确的找到!这个时候,我们需要在创建窗体的后面加一行winid();比如:MyWIdget::MyWidget(QWidget* parent){ QPushButton* pbutton = new QPushbutton(this);}这样的话 你原创 2017-03-01 13:49:00 · 7958 阅读 · 1 评论 -
QTableWidget与QTableView的区别
QTableWidget继承自QTableView。QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑定。QSqlTableModel *model = new QSqlTableModel;model->setTable("employee");model->setEditStrategy(QSqlTableModel::OnMa原创 2017-02-11 20:26:05 · 5858 阅读 · 0 评论 -
Qt下QTableWidget的使用
本文主要内容:QTableWidget的基本设置设置QTableWidget的某些字段不可编辑和背景颜色QTableWidget单元格的插入QTableWidget按字段值排序在QTableWidget单元格中插入checkBoxDemo代码1、QTableWidget的基本设置ui->tableWidget->setColumnCount(11);ui->tableWidget转载 2017-02-11 19:48:53 · 1532 阅读 · 0 评论 -
Qt之系统托盘(QSystemTrayIcon详解)
托盘是什么?这个就不用在多说了!而Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘。。。 void TrayMenu::createActions() { //创建托盘项 action_show = new QAction(this); action_quit = new QAction(this);转载 2017-02-11 15:58:51 · 953 阅读 · 0 评论 -
qt利用QSplitter任意拆分窗口
一个QSplitter是一个可以包含其他控件的控件,这些控件被一个分隔条隔开,托拽这个分隔条,可以改变splitter的子控件的大小。QSplitter控件经常做为布局管理器使用,给用户提供更多的界面控制。实例:实现功能:使用QSplitter实现分割窗口功能,整个对话框由四个窗口组成,各个窗口之间的大小可以任意拖拽来改变。步骤:1. 使用Qt Creater转载 2017-02-11 14:51:27 · 2158 阅读 · 0 评论 -
QMiniData
QMimeData类提为数据提供一个容器,用来记录关于MIME类型数据的信息QMimeData常用来描述保存在剪切板里信息,或者拖拽原理QMimeData对象把它所保存的信息和正确的MIME类型连接起来来保证信息可以被安全的在应用程序之间转移,或者在同一个应用程序之间拷贝QMimeData对象通产雇佣new来创建,并且支持QDrag和QClipboard对象,这可以使QT管理他们所使用原创 2017-02-11 13:43:06 · 485 阅读 · 0 评论 -
Qt之设置QWidget背景色
QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。一般我不用QSS设置窗口背景,也不建议使用。(这里是对于窗口而,如果是子部件当然可以)。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。QPalette pal(palette());pal.setColor(QPalette::Background, Q原创 2017-02-11 13:32:59 · 545 阅读 · 0 评论 -
Qt拖放 drag and drop
拖放提供一个应用程序之间传递信息的一种简单的可视化机制。拖放机制类似于剪切和粘贴机制。拖放操作同时被QT项目视图和图形视图框架支持。QApplication提供了两个拖放相关的方法:1. QApplication::startDragTime。它描述了用户按下鼠标多长时间开始拖放操作。2. QApplication::startDragDistance。它描述了用户按下鼠标转载 2017-02-11 13:15:48 · 774 阅读 · 0 评论 -
qt 获取窗口句柄
HWND appwnd;appwnd = (HWND)w.winId();QString ClassName("Qt5QWindowIcon");QString AppName = QStringLiteral("GG");LPCWSTR app = reinterpret_cast(ClassName.data());LPCWSTR appCaption = reinterpret_原创 2017-02-10 23:13:13 · 26586 阅读 · 0 评论 -
Qt 密码框不可选中、复制、粘贴、无右键菜单等
在做用户登录、修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同。例如:不能选中、复制、粘贴、无右键菜单等功能,当然设置密码不可见是必须的!一般的密码框:(默认 可以选中,复制,粘贴,有右键菜单)QLineEdit *pCommonLineEdit = new QLineEdit(this);pCommonLineEdit->setPlaceholderTe原创 2017-01-24 21:50:21 · 641 阅读 · 0 评论 -
Qt 事件过滤器
Qt 事件模型一个真正强大的特色是一个QObject的实例能够管理另一个QObject 实例的事件。一个事件过滤器的安装需要下面2个步骤:1、调用installEventFilter()注册需要管理的对象。2、在eventFilter() 里处理需要管理的对象的事件。伪代码如下: pFilterLineEdit->installEventFilter(new EventFi原创 2017-01-25 20:35:29 · 504 阅读 · 0 评论 -
QT 线程池 + TCP 小试(三)实现最终功能
*免分资源链接点击打开链接http://download.youkuaiyun.com/detail/goldenhawking/4492378 有了TCP、线程池,我们就可以把他们连接起来。使用最简单的 QMainWindow吧,设计个UI,而后,创建我们的线程池、Service,并把TcpService 的数据接收信号与线程池的数据处理信号连接起来。 为了模拟处理任转载 2017-02-27 15:18:29 · 378 阅读 · 0 评论 -
QT 线程池 + TCP 小试(二)实现通信功能
*免分资源链接点击打开链接http://download.youkuaiyun.com/detail/goldenhawking/4492378 有了线程池,我们下一步就利用 QTcpServer 搭建一个服务器,接受客户端的连接,并把数据发送到线程池上。由于 QTcpServer 资料太多了,这里不在赘述。唯一值得注意的是,当客户端退出时,如果线程池队列中还有该客户的信息,这个信息转载 2017-02-27 15:17:38 · 721 阅读 · 2 评论 -
QT 线程池 + TCP 小试(一)线程池的简单实现
*免分资源链接点击打开链接http://download.youkuaiyun.com/detail/goldenhawking/4492378 很久以前做过ACE + MFC/QT 的中轻量级线程池应用,大概就是利用线程池执行客户机上的运算需求,将结果返回。ACE是跨平台重量级的通信中间件,与常见的应用程序框架需要精心契合,才能不出问题。最近想到既然QT框架本身就已经具有各类功能,何不转载 2017-02-27 15:16:37 · 386 阅读 · 0 评论 -
Qt之线程同步(生产者消费者模式 - QSemaphore)
简述生产者将数据写入缓冲区,直到它到达缓冲区的末尾,此时,它将从开始位置重新启动,覆盖现有数据。消费者线程读取数据并将其写入标准错误。Semaphore(信号量) 比 mutex(互斥量)有一个更高级的并发性。如果缓冲区的访问由一个 QMutex 把守,当生产者线程访问缓冲区时,消费者线程将无法访问。然而,有两个线程同一时间访问不同的缓冲区是没有害处的。示例包括两个类:Prod转载 2017-02-27 11:06:13 · 559 阅读 · 0 评论 -
Qt之线程同步(生产者消费者模式 - QWaitCondition)
简述生产者将数据写入缓冲区,直到它到达缓冲区的末尾,这时,它从开始位置重新启动,覆盖现有数据。消费者线程读取数据并将其写入标准错误。Wait condition(等待条件)比单独使用 mutex(互斥量)有一个更高级的并发性,如果缓冲区的访问由一个 QMutex 把守,当生产者线程访问缓冲区时,消费者线程将无法访问。然而,两个线程同时访问不同的缓冲区是没有害处的。示例包含两个类转载 2017-02-27 11:05:25 · 597 阅读 · 0 评论 -
关于屏幕分辨率的一些操作
MonitorAdapter.h#include #include #include #include using std::vector;using namespace std;#define MAX_MONITOR_NAME 256static std::vector g_hMonitorGroup; // 显示器模式信息typedef struct Monit原创 2017-02-03 23:00:57 · 854 阅读 · 0 评论 -
qt 下log4cplus的使用
log4cplus的库版本在windows下的使用是必须和vs版本对应的,所以这边吧编译过程都省略吧!直接上代码吧!MyLogger.h#pragma once#include#include#include #include #include #include #include #define MY_LOG_FILE "./logconfig.properities原创 2017-02-03 22:16:12 · 3434 阅读 · 1 评论 -
qt中tinyxml2的基本使用方法
TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。官方文档,http://grinningliz原创 2017-02-03 22:04:29 · 2920 阅读 · 0 评论 -
qt 5.0中HeaderView的setResiziMode无法使用的问题
这是因为在qt5.0中将这个函数取消了。换成了setSectionResizeMode 。关于headerview中取消的函数在这里可以查看到:http://qt-project.org/doc/qt-5.0/qtwidgets/qheaderview-compat.html#setResizeMode-2原创 2017-02-15 21:32:26 · 602 阅读 · 0 评论 -
Qt容器类(总结)(新发现的QQueue和QStack,注意全都是泛型)
IntroductionQt库提供了一组基于模板的一般化的容器类。这些容器可以存储指定的类型的元素。例如,如果你需要一个可变大小的Qstring数组,可以用QVectorQString>.。这些容器比STL容器更轻更安全更容易使用。如果你不熟悉STL或者更喜欢以Qt的方式做事,你可以用这些类取代STL类。这些类是隐式共享的,它们都是可重入,它们进行了速度优化,用更少的内存和最小转载 2017-02-15 17:14:51 · 5306 阅读 · 0 评论 -
qt setData()和data()
简述在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件、注册表、数据库、或者是Server。无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个用户头像,显示该用户的详细信息(等级、昵称、姓名、个人说明)。简述常见接口数据源setData和data单独存储整体存储setItemDat转载 2017-02-15 14:29:30 · 4881 阅读 · 2 评论 -
qt中关于坐标的说明
qt中有两类坐标系统,一类是窗口坐标,一类是显示器坐标(全局坐标)。QPoint QMouseEvent::pos() :返回相对这个widget的位置QPoint QMouseEvent::globalPos() :窗口坐标,这个是返回鼠标的全局坐标QPoint QWidget::pos() :这个属性获得的是当前目前控件在父窗口中的位置QPoint QWidget::m原创 2017-02-08 15:41:37 · 2026 阅读 · 0 评论 -
从Qt4 迁移到Qt5 winEvent代替为nativeEvent
之前项目的代码从Qt4迁移到Qt5, 发现以前在Qt4中使用winEvent写的边缘拖动无法通过编译.查了一下原来是在Qt5中已经移除winEvent, 并使用nativeEvent来代替.那么在工程中只需要略加修改即可使用, 主要改两个地方:1. 加入nativeEvent函数: bool MainDialog::nativeEvent(const原创 2017-02-22 16:29:23 · 5211 阅读 · 0 评论 -
qt 处理自定义的windows消息
#include "mainwindow.h"#include "ui_mainwindow.h"#include #include bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result){ if (eventType == "windows_ge原创 2017-02-22 16:23:08 · 2156 阅读 · 0 评论 -
Qt 自定义界面(实现无边框、可移动)
设置窗口标志为无边框this->setWindowFlags(Qt::FramelessWindowHint);设置无边框之后,窗体是无法移动的,下面我们介绍两种方式来进行移动。1. Qt事件:重写函数// 鼠标相对于窗体的位置 event->globalPos() - this->pos()void Widget::mousePressEvent(QMouseEvent *e原创 2017-01-25 21:13:46 · 1327 阅读 · 0 评论 -
VS下的常用快捷键
番茄助手:Shift+alt+f:查找符号的所有引用Shift+alt+0:查找文件Shift+alt+r:修改函数的名字,会把所有用到的地方列举出啦Shift+alt+s:查找符号alt+o:在cpp和h中进行转换alt+g:转到函数定义的地方VS:shift+ctrl+b:编译选中一行:home然后shift+end即可alt+或者-:前进或后退al原创 2017-02-10 16:44:13 · 436 阅读 · 0 评论 -
vs2013 编译libevent32和64bit
libevent代码地址: https://github.com/libevent/libevent打开Microsoft visual studio 2013命令行工具,分别是VS2013 x86 本机工具命令提示和VS2013 x64 本机工具命令提示直接进入代码目录,输入nmake /f Makefile.nmake目录下会生成libevent_core.lib libe原创 2017-02-19 20:59:21 · 575 阅读 · 0 评论 -
JsonCpp的简单使用方法
下载的话直接去官网下载,源码编译 直接在makefile下面有个vs的sln文件,可以直接编译为静态库,可以放到自己工程里面!下面讲一下怎么使用JsonCpp来序列化和反序列化Json对象,以实际代码为例子。反序列化Json对象比如一个Json对象的字符串序列如下,其中”array”:[...]表示Json对象中的数组:{“key1″:”value1″,”array”:[{"k原创 2017-02-19 12:00:19 · 415 阅读 · 0 评论 -
Qt信号和槽连接方式的选择
Qt supports these signal-slot connection typesAuto Connection (default) If the signal is emitted in the thread which the receiving object has affinity then the behavior is the same as the Direct原创 2017-02-07 16:21:18 · 963 阅读 · 0 评论 -
Qt之可重入与线程安全
本篇文章中,术语“可重入性”和“线程安全”被用来标记类与函数,以表明它们如何被应用在多线程应用程序中。一个线程安全的函数可以同时被多个线程调用,甚至调用者会使用共享数据也没有问题,因为对共享数据的访问是串行的。一个可重入函数也可以同时被多个线程调用,但是每个调用者只能使用自己的数据。因此,一个线程安全的函数总是可重入的,但一个可重入的函数并不一定是线程安全的。扩展开原创 2017-02-07 16:07:04 · 317 阅读 · 0 评论 -
qt 屏蔽系统休眠
屏幕系统休眠SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); 恢复系统休眠SetThreadExecutionState(ES_CONTINUOUS );原创 2017-02-07 13:56:42 · 1888 阅读 · 1 评论 -
windows 打开和关闭显示器
主要是两个函数FindWindow 和SendMessage使用方法如下关闭显示器 SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, 2); 打开显示器 SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, -1); FindWindo原创 2017-02-07 11:31:03 · 1814 阅读 · 2 评论