![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT开发
哇风
欢迎大家一起来学习 c/c++ ,数据结构,嵌入式相关课程
交流qq群:499984459
展开
-
QT QTcpserver 端口可重用问题
#include <QObject>#include <QTcpServer>#include <QTcpSocket>#include <QNetworkInterface>#include "IMsgInterface.h"class Server : public QObject{ Q_OBJECTpublic: explicit Server(QObject *parent = 0); ~Ser...原创 2021-09-22 09:13:36 · 1622 阅读 · 0 评论 -
2020-09-01
#include "chatlist.h"#include <QPushButton>#include <QScrollBar>ChatList::ChatList(QWidget *parent) : QWidget(parent){ initComponent();}ChatList::~ChatList(){ delete m_pChatListScrollArea;}void ChatList::initComponent(){ .原创 2020-09-01 08:39:43 · 65 阅读 · 0 评论 -
QT使用tr()函数处理中文,编译报错或者乱码的问题
1.tr()函数处理中文,编译报错当cpp文件使用的是utf-8 无签名的编码格式时,QObject::tr()函数在处理中文的时候会报错。原因是:VS的Cl编译器是无法识别utf-8无签名的格式,会把它当成ANSI来读取解析编译。所以解析可能出 问题,导致编译错误。解决办法:在vs的文件----高级保存选项中,选择Unicode (UTF-8 带签名)格式保存,更改文件编码格式2.tr()函数处理中文,显示乱码当cpp文件使用的是utf-8 带签名的编码格式时,QObject::tr()函数在原创 2020-05-21 19:56:49 · 1995 阅读 · 3 评论 -
【Qt开发】更改应用程序图标和任务栏图标
说明实际开发过程中,生成的应用文件不会用默认的图标,同时程序启动后任务栏的图标也需要修改,还有窗口的图标,这样显得程序不那么low。更改程序的图标有多种方式,基于Qt Creator或vs开发的方式有区别,任务栏图标和窗口图标,只需加入一段代码即可实现,本文开发环境是qt5.9.7+vs2017。如有MFC开发经验,对于更改程序图标来说基本类似。更改程序图标1.把下载好的图标EXE.ico文件放到Resources文件夹下2.右键--》添加--》新建项,选择资源文件,新建资源文件*.rc转载 2020-05-17 11:38:55 · 1493 阅读 · 0 评论 -
Qt 获取本机 ip地址方法
Qt 获取本机ip地址代码如下QString IpAddressManager::getHostIpAddress(){ QString strIpAddress; QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses(); // 获取第一个本主机的IPv4地址 ...原创 2019-07-18 11:07:02 · 10935 阅读 · 0 评论 -
qRegisterMetaType的使用
如果是自己定义的类型如果想使用signal/slot来传递的话,则没有这么简单。直接使用的话,会产生下面这种错误:QObject::connect: Cannot queue arguments of type 'TextAndNumber' (Make sure 'TextAndNumber' is registed using qRegisterMetaType().) 原因:当一...原创 2019-05-21 18:19:48 · 579 阅读 · 0 评论 -
c++ 实现多线程安全的单例模板类
单类模板代码:#pragma once#include <QMutex>template <class T>class Singleton{protected: Singleton(){}; private: Singleton(const Singleton&){}; Singleton& operator...原创 2019-04-30 09:57:25 · 769 阅读 · 0 评论 -
QT信号与槽的连接方式
一.Qt::AutoConnectionQt::AutoConnection表示系统自动选择相应的连接方式,如果信号与槽在同一线程,就采用Qt::DirectConnection,如果信号与槽不在同一线程,将采用Qt::QueuedConnection的连接方式。二.Qt::DirectConnectionQt::DirectConnection表示一旦信号产生,立即执行槽函数...原创 2019-04-25 10:31:49 · 7430 阅读 · 0 评论 -
未知问题记载
一 .ROS 中 ,非 QObject 类 改为 QOject 类 后编译不过问题1. ROS中 先使用一个非QObject 类 编程 ,(.cpp 文件和 .h文件分开放在不同的文件夹下), 后将该类改为 继承QObject 使用其信号与槽功能, 全清 build 和 devel 文件夹, 编译环境为ROS (catkin_make) , 编译发现编译不过 , vtable 找...原创 2019-04-25 08:54:37 · 126 阅读 · 0 评论 -
Linux下设置QT环境变量
①、更改用户环境变量 gedit /home/(usr)/.bashrc 添加: export QTDIR=/usr/local/Trolltech/Qt-4.8.2 export PATH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PATH=$QTDIR/...原创 2019-04-16 18:16:25 · 3072 阅读 · 0 评论 -
CMake中添加Qt模块的合理方法
用CMake来组织的工程中要用Qt首先要设置、找到Qt相关模块。主要是通过find_package这个CMake命令。但网上很多教程都过时了,或者不够清晰灵活。因为这部分很常用,所以特别用一篇文章把我们目前在生产环境中使用的方法给大家介绍下。设置Qt库路径Qt版本很多,我们的开发机上一般也装有多个不同版本的Qt。个人尝试性的项目一般用最新版的Qt,而真正发布的产品一般用的是LTS版本Qt(...原创 2019-04-16 17:56:08 · 1823 阅读 · 1 评论 -
Qt工程名称和文件名称的修改
一、修改工程的名称1、关闭当前工程 2、build -> clean project 3、进入.pro工程文件,进行以下修改 TARGET = XXXXX (你所需要修改新的工程名称)1二、修改文件名1、修改文件名很容易,直接点击右键->重命名就可以了。 但是Qt默认是全小写文件名的,如果想把小写的文件名改成大写,如驼峰式的文件名称,如果直接点右键->重...原创 2019-02-27 17:41:10 · 6455 阅读 · 0 评论 -
使用Item 自定义Dialog,解决 qml 自带输入法不能输入问题
//自定义item dialog 代码如下:import QtQuick 2.0Item { id: dialogComponent anchors.fill: parent property alias titleText: titleLabel.text property alias cancelText: cancelButton.text ...原创 2018-10-24 16:59:11 · 765 阅读 · 0 评论 -
QTableview 使用
实现QTableview 界面显示 1.初始化表头void MainWindow::initHead(){ //准备数据模型 QStandardItemModel *student_model = new QStandardItemModel(); student_model->setHorizontalHeaderItem(0, ne原创 2017-10-14 21:58:31 · 699 阅读 · 0 评论 -
Qt 蓝牙开发 客户端
初始化:void Widget::init(){ discoveryAgent = new QBluetoothDeviceDiscoveryAgent(); localDevice = new QBluetoothLocalDevice(); socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommPro...原创 2019-07-29 09:19:55 · 3413 阅读 · 3 评论 -
TabWidget 样式设置
QTabWidget:pane {border: none;}QTabBar:tab {background: blue;color: white;min-width:128px;min-height:55px;border-top-left-radius: 6px;border-top-right-radius: 6px;margin-right: ...原创 2019-07-29 09:23:25 · 536 阅读 · 0 评论 -
protobuf的安装 和使用
protobuf的安装protoc的源码和各个系统的预编译包:https://github.com/protocolbuffers/protobuf/releases1、选择对应的安装文件下载2、添加到环境变量中安装完成!说明.proto文件是protobuf一个重要的文件,它定义了需要序列化数据的结构。使用protobuf的3个步骤是:第一步,在.proto...原创 2019-07-30 18:56:50 · 6503 阅读 · 1 评论 -
MoveToThread 方式创建线程
MoveToThread 方式创建线程, 原来的信号和糟调用使用直连方式 Qt::DirectConnection 则槽函数并不在新线程中执行原创 2019-08-21 15:20:53 · 735 阅读 · 0 评论 -
QByteArray 转 QString 问题
QByteArray 转 QString 问题 , QByteArray 后面有 \0 的 此时转换为QString 会有问题 丢数据, 因为QString字符串是以 \0结尾的原创 2019-08-20 19:49:47 · 1176 阅读 · 0 评论 -
qt获取前几天后几天的数据
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间QString str = time.toString("yyyy-MM-dd"); //设置显示格式QString BeforeDaystr=time.addDays(-1).toString("yyyy-mm-dd");//获取前一天时间QString BeforeDays...原创 2019-08-07 14:34:32 · 388 阅读 · 0 评论 -
获取文件夹下所有文件名
void monizhuzhan::filenameInDir(){//判断路径是否存在QDir dir(path);if(!dir.exists())return;//查看路径中后缀为.cfg格式的文件QStringList filters;filters<<QString("*.c...原创 2019-08-07 11:03:11 · 344 阅读 · 0 评论 -
基本图形绘制(一)
Qt 图形系统中的关键角色QPainter 1.Qt 中的画家,能够绘制各种基础图形 2. 拥有绘制所需的画笔(QPen),画刷(QBrush),字体(QFont)QPen 用于绘制几何图形的边缘,由颜色,宽度,先风格等参数组成QBrush 用于填充几何图形的调色板,由颜色和填充风格组成QFont 用于文本绘制,由字体属性组成QPaint...原创 2019-08-13 22:29:12 · 169 阅读 · 0 评论 -
protobuf 开发中遇到的问题
将 protobuf 生成的std::string m_data放入 QByteArray 时 发现反序列化不成功 放入方式为QByteArray ret ;QByteArray data =m_data.c_str();ret.append(data);后改为如下方式:反序列化问题解决QByteArray ret ;ret.append(m_data....原创 2019-08-13 18:52:49 · 243 阅读 · 0 评论 -
QtCreator 设置黑色主题背景
下面是Qt5集成的Qt Creator设置黑色背景的方法,之前有些版本稍有差别:设置之后代码部分的背景并没有改变,下面配置文字的颜色:提示:1.设置完后重启 Qtcreator2.之前的一些版本在“环境--概要”里面可能没有Theme(主题)选项,跳过第二步直接在第三步设置就行了,如下图。如果还是不行,则需要下载一个主题文件,将dark.css拷贝到qtcreator...原创 2019-08-06 16:56:25 · 7589 阅读 · 1 评论 -
protobuf 序列化后问题
protobuf 序列化后 生成 std::string 然后将std::string 转化为 QString 再反转回 std::string 进行反序列化 发现生成的值不对原创 2019-08-13 12:25:25 · 844 阅读 · 0 评论 -
QbyteArray 转换为 QString 时数据被截断
QbyteArray 数据:"\b\x01\x12\x04""0005\x19\x00\x00\x00\x00\x00\x00\f@!\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD?)\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\...原创 2019-08-05 15:46:05 · 2400 阅读 · 2 评论 -
指向类成员函数指针 (对外建立一个测试函数接口测试类中私有函数接口)
代码单元测试时候,怎样让外部测试自己私有函数接口了,此处对外提供一个公有的函数测试接口,测试其私有接口函数 ,此处用指向类成员函数指针来实现例子如下: #include #includeusing namespace std;class Widget{public: Widget() { pa[0]=&f;原创 2017-10-21 00:19:46 · 345 阅读 · 0 评论 -
QT中缓冲区- QBuffer
QBuffer 缓冲区的使用方式QBuffer 缓冲区的使用场合:1.在线程间进行不同类型不同数量的数据传递2.缓存外部设备中的数据访问3.数据读取速度小于数据写入速度写缓冲区: QByteArray array; QBuffer buffer(&array);int type =0; if( buffer.open(QIODevice::W原创 2017-10-06 16:58:07 · 9794 阅读 · 0 评论 -
qt自定义事件
这部分将作为Qt事件部分的结束。我们在前面已经从大概上了解了Qt的事件机制。下面要说的是如何自定义事件。Qt允许你创建自己的事件类型,这在多线程的程序中尤其有用,当然,也可以用在单线程的程序中,作为一种对象间通讯的机制。那么,为什么我需要使用事件,而不是使用信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总是同步的。事件的另外一个好处是,它可以使原创 2017-03-23 22:37:30 · 571 阅读 · 0 评论 -
QT sendEvent()和postEvent()
QT文档中这样解释:sendEvent(QObject* receiver,QEvent* event)使用notify()函数直接给receiver发送事件。postEvent(QObject* receiver, QEvent* event)向事件队列中添加receiver和event。简单说,sendEvent使用的是同步处理事件,postEvent使转载 2017-03-23 22:27:18 · 9251 阅读 · 1 评论 -
qt phonon 制作音乐播放器学习(怎样让播放进度条和音乐播放时长同步)
在播放媒体文件时,媒体对象MediaObject 会在指定的时间间隔发射tick(qint64 time)信号, 这个时间间隔可以使用setTickInterval()来进行设置,tick()中的time参数指定了媒体对象在媒体流中的当前位置,单位是毫秒。实现代码如下:构造函数中: // 创建媒体图 mediaObject = new Phonon::MediaO原创 2017-02-23 19:18:18 · 3033 阅读 · 0 评论 -
qt phonon 制作音乐播放器实现歌词和遮罩功能
播放效果图如下:实现方法:源代码如下:#include "mylrc.h"#include #include #include #include #include MyLrc::MyLrc(QWidget *parent) : QLabel(parent){ setWindowFlags(Qt::Window原创 2017-03-02 00:11:42 · 1921 阅读 · 0 评论 -
策略模式(Strategy)
策略模式的定义: 1.定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。2.策略模式使这些算法在客户端调用他们的时候能够互不影响的变化。策略模式的意义:策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱连接的关系。弱连接的特性使软件具有更强的可扩展性,易于维护,更重要的是,它大大提高了软件的可重用性。策略模式的组成:抽象策原创 2016-03-24 20:54:49 · 197 阅读 · 0 评论 -
设计模式行为模式(模板方法模式)
概念: 定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义改算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。使用场合:1.一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成。2、各子类公共的行为应该被提取出来并集中到一个公共父类中以避免代码的重复。首先识别现有代码的不同之处,原创 2016-03-24 01:51:45 · 222 阅读 · 0 评论 -
QThread 的wait()的用法
QThread wait()用法是1.线程调用wait()函数时,阻塞一直等到该线程执行完成之后再执行wait()下面的代码原创 2016-03-24 00:48:03 · 12259 阅读 · 2 评论 -
设计模式(六简单工厂模式)
概念: 简单工厂模式是类的创建模式,又叫静态工厂方法模式(static factory method)。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。通常他根据自变量的不同返回不同的类的实例。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪一个产品类的实例。简单工厂模式的构成工厂类(Creator)角色:担任这个角原创 2016-03-17 23:34:21 · 144 阅读 · 0 评论 -
设计模式,行为模式(观察者模式)
概念:观察者模式(observer)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己使用情况:1.当一个抽象模型,其中一个方面依赖于另一个方面,把这两者封装在独立的对象中,使其可以独立的改变和复用。2.改变一个对象需要同时改变其他对象,但不知道有多少对象有待于改变。3.一个对象必原创 2016-03-22 23:32:12 · 276 阅读 · 0 评论 -
QT线程QThread的简单使用实例
QT线程QThread的简单使用实例 ,主要介绍以下几点:1.线程调用start()函数后会自己自动去调用run()函数,一般线程run()函数继承父类重写,即为线程的主要功能执行函数快。2.线程运行中有一个运行态 即通过 调用isRunning()函数来判断线程是否正在执行。正在执行isRunning()函数返回真。否则返回假3.线程运行完后可以通过调用isFinish()函原创 2016-03-07 22:03:48 · 4104 阅读 · 0 评论 -
设计模式,行为方法模式(迭代器模式)
意图: 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。适用性:1.访问一个聚合对象的内容而无需暴露它的内部表示。2.支持对聚合对象的多种遍历。3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代)迭代器模式的构成:1.抽象迭代器(iterator)角色:此抽象角色定义出遍历元素所需的接口。2.具体迭代器角色:此角原创 2016-03-30 01:09:13 · 159 阅读 · 0 评论 -
设计模式 行为方法模式(十命令模式)
意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的构成: 1.客户角色:创建一个具体的命令对象,并确定其接收者 2.命令角色:声明一个给所有具体命令类的抽象接口,这是一个抽象角色,通常由一个接口或者抽象类实现 3.具体命令角色:定义一个接收者和行为之间的弱耦合,实现execut原创 2016-03-29 23:24:10 · 212 阅读 · 0 评论