
Qt
庐州李大爷
小时候的梦,我知道
展开
-
Log4qt使用记录备忘
Log4qt基于Qt4实现的第三方日志记录文件,存在很多版本,我直接在官网下载的09年的版本,然后进行qt5适配。官网源码:https://sourceforge.net/projects/log4qt/ 下载的文件是log4qt-0.3.zip,解压即可。1.将log4qt的源码加到工程中,或者直接对log4qt进行编译,生成lib.dll文件,包含头文件进行动态库加载log4qt(使用的是前面的方法,后面方法主要是因为如果需要修改源码会比较麻烦,既然log4qt已经提供源码,就直接加入工程即可)原创 2021-05-31 16:58:15 · 338 阅读 · 0 评论 -
Qt Pro文件配置
CONFIG += build_all //同时编译所有模式(一般是debug,release)Debug:MOC_DIR += ./tmp/debug //moc文件存放目录Debug:OBJECTS_DIR += ./tmp/debug //obj文件存放目录Release:MOC_DIR += ./tmp/releaseRelease:OBJECTS_DIR += ./tmp/releaseDebug:DESTDIR +=./bin/debug //生成文件目录Release:原创 2021-04-08 17:11:26 · 204 阅读 · 0 评论 -
Qt连接数据库(Sqlite)报错 Driver not loaded解决方法
使用Qt 5.8//一个病人一个table m_pSqliteDatabase = new QSqlDatabase; m_pSqliteDatabase ->addDatabase("QSQLITE"); m_pSqliteDatabase->setDatabaseName("Patients.db"); //m_pSqliteDatabase->setDatabaseName(QApplication::applicationDirPath() + "/../database原创 2021-01-15 17:45:25 · 7325 阅读 · 2 评论 -
QPlainTextEdit使用小结(一)
QPlainTextEdit可用于日志显示信息,当遇到如图所示的现象的时候,我们需要进行覆盖显示。找了很久,只有介绍setOverwriteMode(bool)函数来实现,但是问题比较多。选择了一个新的方法实现该功能。基本逻辑,选择QPlainTextEdit的最后一个block(为了防止文本过长的自动换行导致最后一行是部分数据)并删除它,后续的新的block在删除的位置正常写入即可。逻辑简单,代码也简洁 QString msg = QString::fromLocal8Bit(qbt);原创 2020-10-26 15:23:38 · 2721 阅读 · 0 评论 -
Qt多线程两种实现方法
概述Qt提供了一个管理线程的类:QThread。一个QThread对象管理一个线程。所以可以形象的把QThread当成一个线程去使用。QThreads在run()中开始执行。默认情况下,run()通过调用exec()启动事件循环,并在线程内运行Qt事件循环。您可以通过使用QObject::moveToThread()将工作者对象移动到线程中来使用它们。这种方法您可以自由地将Worker的slot连接到来自任何对象、任何线程的任何信号上。由于有一种称为QueuedConnections的机制,在不同线程原创 2020-10-19 19:37:37 · 287 阅读 · 0 评论 -
Qt绘制圆弧实现
根据操作习惯,绘制圆弧只需要三点即可,需求背景:点击生成两点后,分别为起点和终点(圆弧的边缘点),第三次点击的时候为圆弧上的点话不多说,直接代码:(Pi = 3.1415926,m_center圆心坐标,m_r半径) //三点确定一个圆,硬解,可得到表达式(三点一线的时候,则无法形成圆) -- 直接网上搜索有对应的代码,https://blog.youkuaiyun.com/liyuanbhu...原创 2019-01-16 16:36:07 · 7411 阅读 · 4 评论 -
QGraphicsView的在重载重绘函数时,绘制控件的注意事项(一)
在QGraphicsView中进行绘制的时候,注意坐标映射,mapToScene,mapFromScene等可以实现scene和view的坐标关系,但是在绘制控件的时候,不能涉及到w,h等长度概念,否则在scene和view进行映射的时候会发生不可预知的现象(scene和view之间坐标系不一致的时候)。如:在QGraphicsView的重绘函数中addRect,此时的Rectangle不能使用...原创 2018-10-09 08:48:53 · 2396 阅读 · 0 评论 -
QGraphicsView 鼠标样式和QGraphicsItem的鼠标的样式
QGraphicsView和QGraphicsItem修改鼠标的光标形状,都可以使用this->setCursor()函数进行设置区别在于,QGraphicsItem中的this表示item,QGraphicsView 的this表示view在我进行对QGraphicsItem进行封装的时候,用到this->setCursor()进行item的鼠标的样式修改,正常是没有问题,但是...转载 2018-10-15 09:37:46 · 1626 阅读 · 0 评论 -
QGraphicsItem封装之mouseMoveEvent()
今天在测试别人遗留的bug的时候,发现一个细节,很容易忽略的问题,记录下在对基于QGraphicsItem的类进行封装的时候,出现一个问题,就是拖动或者涉及到mouseMoveEvent()函数的时候,会出现位置不准确,达不到理论的移动效果,(逻辑是正确的)是由于在重写的函数中添加了QGraphicsItem::mouseMoveEvent(event);这是我们的习惯导致的,Qt的QGra...原创 2018-10-12 15:58:18 · 2680 阅读 · 2 评论 -
Qt使Release版本可调试(转载)
转载自: https://blog.youkuaiyun.com/caoshangpa/article/details/62416302 只需在pro文件中加入QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGIN...转载 2018-06-26 14:49:14 · 1916 阅读 · 0 评论 -
Qt绘图效率的测试(QGraphicsItem QGraphicsPointItem)
Qt在绘制point的时候,一般都直接调用addPoint()函数,但是在point数量达到一定程度的时候,会发生很严重的卡顿现象,比如,绘制10w个point,绘制100w个point(point的无序的) 以10w个point为测试, QTime time; time.start(); for(int i=0;i<100000;i++){ ...原创 2018-05-30 16:31:00 · 9903 阅读 · 13 评论 -
Qt的painter相关(针对QGraphicsItem和item中的绘制的坐标相关测试)
记录下自己在实际进行封装item的时候,出现的一个现象bug, 以自己实际的测试为标准: 封装绘制一个圆的控件的时候,直接对paint()函数进行重新,也对该 代码如下: painter->setPen(QPen(QBrush(penColor),0)); painter->drawEllipse(QRectF(m_x,m_y,m_width,m_height)...原创 2018-06-04 15:40:02 · 2424 阅读 · 0 评论 -
QGraphicsView的缩放和拖动,以及缩放围绕鼠标所在点进行缩放
因为要实现一个功能是,拖动view所在的窗口,可以显示scene中所有的信息,在网上找了很多资料,都是在缩放后通过scrollView进行拖动的,但是这个拖动是有问题的,只是拖动对应的scrollView中的数据,这不是我要进行拖动可以看到出来viewport中的数据,还包括很多无法显示的scene的其他部分代码如下:.h#ifndef MAINWINDOW_H#define MAINWI...原创 2018-11-20 11:16:10 · 26020 阅读 · 12 评论 -
QGraphicsItem封装的直线控件(添加箭头)
最近在封装QGraphicsScene的很多控件,需要在绘制直线后,显示箭头表示方向,并且该直线的起点和终点可变化(箭头需要实时变化) qreal alph = atan2(m_pointF2.y()-m_pointF1.y(), m_pointF2.x()-m_pointF1.x()); painter->translate(m_pointF2); qreal a...原创 2018-11-29 17:27:13 · 7064 阅读 · 18 评论 -
Qt多语言----QObject::tr()
tr()函数的参数只要是char*类型即可。 QString strTest = "测试"; QByteArray byteArray = strTest.toLatin1(); char * ch = byteArray.data(); this->setWindowTitle(QObject::tr(ch));...原创 2018-12-24 16:46:19 · 3112 阅读 · 1 评论 -
QGraphicsItem的hoverMoveEvent()函数
QGraphicsItem的mouseMoveEvent()函数必须鼠标按下的情况下进行move才会触发。QWidget的mouseMoveEvent()函数可以通过设置setMouseTracking(true)在鼠标不需要按下的情况下,触发鼠标move事件。QGraphicsItem要实现鼠标不按下的情况下,获取鼠标move事件,可通过**hoverMoveEvent()来实现,可通过设置...原创 2019-01-18 14:26:00 · 7056 阅读 · 5 评论 -
Qt程序启动画面 QSplashScreen
参考帮助文档描述QSplashScreen是用于在应用启动的时候的闪屏的一个widget,这个widget通常是在应用启动后显示的。一般在应用需要很长时间才能加载显示主界面的时候使用这个类来处理(比如数据库,需要连接网络的应用等等)官方给予的示例 int main(int argc, char *argv[]) { QApplication app(argc, argv);...翻译 2019-03-08 14:25:23 · 1069 阅读 · 1 评论 -
processEvents()函数
在使用Qt的过程中,经常会碰到需要运行耗时的逻辑代码的时候,一般都采用多线程进行处理,这样可以保证主线程(界面)不会被占用,导致用户操作无效,出现等待无响应现象。Qt本身提供一个函数QApplication::processEvents()来处理。下面采用示例来进行解释processEvents函数的功能MainWindow::MainWindow(QWidget *parent) ...原创 2019-03-08 15:09:34 · 26346 阅读 · 0 评论 -
QFlags实现枚举并列
Qt的很多属性参数都是可以通过或运算进行多属性设置,最典型的是左上,左|上如果是我们自己实现相应功能需要处理的enum Test{ a=0x01, b=0x02, c=0x04, d=0x08, e=0x10, f=0x20}Q_DECLARE_FLAGS(Tests,Test)Q_DECLARE_OPERATORS_FOR_FLAGS(Tests)使用的时候void...原创 2019-08-05 15:42:32 · 315 阅读 · 0 评论 -
关于QGraphicsView中的相对坐标系自定义实现
需求:不采用QGraphicsView本身的平移和旋转是因为所有的item是自定义封装的,存在交互上的数据变化,如果采用Qt自带的转换会导致交互数据出现错乱实现思想:放弃了坐标系的概念,采用虚拟坐标系代替–坐标系不存在,但是体现在所有item的数据上;所有的数据都是原始坐标系,只是记录相对坐标系的值。实现步骤:当前坐标系的点----》需要被转换的坐标系的点----》原始坐标系的点简单...原创 2019-09-09 17:16:58 · 960 阅读 · 0 评论 -
Qt的project文件的设置相关
链接地址:https://www.cnblogs.com/Braveliu/p/5107550.html转载 2018-05-16 09:06:38 · 2280 阅读 · 0 评论 -
关于QListWidget自定义Item的学习
直接上代码, QListWidget *listWidget = new QListWidget; QWidget *widget = new QWidget; QListWidgetItem *item = new QListWidgetItem(listWidget ); listWidget->addItem(nit...原创 2018-04-21 17:57:42 · 9353 阅读 · 8 评论 -
qml在开发板上启动时,出现白屏(qml的两种加载方式)
#include <QGuiApplication>#include <QQmlApplicationEngine>#include<QTextCodec>#include <QQuickView>#include <QtQml>QQuickView *view;int main(int argc, char *argv[]){ QTextCodec::setCodecForLo原创 2016-08-24 14:26:28 · 3537 阅读 · 2 评论 -
关于C++中获取图片传递给qml (Qt5.4)
.h#ifndef MYIMAGEPROVIDER_H#define MYIMAGEPROVIDER_H#include <QQuickImageProvider>#include <QQuickWindow>#include <QImage>class MyImageProvider : public QQuickImageProvider{public: explicit My原创 2016-08-20 10:59:19 · 3923 阅读 · 1 评论 -
qml中关于多个MouseArea之间的事件传递(propagateComposedEvent)
import QtQuick 2.0Rectangle { color: “yellow” width: 100; height: 100 MouseArea { anchors.fill: parent onClicked: console.log("clicked yellow") } Rectangle { color:翻译 2016-08-13 15:42:17 · 7955 阅读 · 0 评论 -
关于QProcess的进程中的运行先后测试
QProcess *myprocess = new QProcess(); connect(myprocess,SIGNAL(started()),this,SLOT(slotStarted())); connect(myprocess,SIGNAL(finished(int)),this,SLOT(slotFinished(int))); myprocess->setProcesschann原创 2016-06-29 13:55:31 · 1211 阅读 · 0 评论 -
Qt中带有参数的信号传递出错--自定义类型的参数
在使用中,当我们自定义结构体的时候或者一些其他类型的时候,通过Qt的SIGNAL是无法传递的,这个时候就需要进行注册: 方式如下: 自定义结构体 student_info;qRegisterMetaType(“student_info”);原创 2016-05-06 15:23:00 · 1261 阅读 · 0 评论 -
Qt中的json解析和处理 (使用的是qt5 版本)
不啰嗦,直接上代码,参考了部分网友的方法,自已另外也完善了下,讲json换成map以及嵌套的情况下也做好了 参考的地址是://http://www.cnblogs.com/Jim-william/p/5005738.htmlqDebug()<<"analisisJson json ";QJsonDocument document;QString json_str(arrayData); //原创 2016-05-11 17:44:00 · 4503 阅读 · 0 评论 -
qml中关于播放视频超过一个小时的时间显示
一些个人碰到的问题,qml中获取视频时间显示的问题, 主要是超过一个小时的,下面是在qml中写的转换函数property var utilData: new Data(); function msecsToString(msecs,bh) { utilData.setTime(msecs); //转换成时间格式 var ih = msecs/3600000; //获原创 2016-05-24 11:43:07 · 796 阅读 · 0 评论 -
qwidget 透明窗体
qwidget 透明窗体1、设置窗体的背景色 在构造函数里添加代码,需要添加头文件qpalette或qgui QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 通过设置窗体的背景色来实现,将背景色设置为转载 2014-06-26 16:51:27 · 865 阅读 · 0 评论 -
关于QML中的listView的model
在帮助文档中可以搜索models and views:objecttListModel Example查看,里面有详细的代码,我就多此一举贴出来了#ifndef DATAOBJECT_H#define DATAOBJECT_H#include //![0]class DataObject : public QObject{ Q_OBJECT翻译 2015-12-02 14:00:26 · 3877 阅读 · 0 评论 -
学习Qt的QML的Canvas(一) ---(参考书籍 《Qt Quick 核心编程-安晓辉》)
import QtQuick 2.4import QtQuick.Controls 1.2import QtQuick.Controls.Styles 1.2import QtQuick.Window 2.2Rectangle { visible: true width: 600;height: 600; Canvas{ width: 400;转载 2016-11-26 16:34:16 · 2568 阅读 · 0 评论 -
QFile的文件清空操作
QFile的文件清空的操作,()QFile file("/etc/wpa_supplicant.conf");file.open(QIODevice::ReadOnly);QTextStream io(&file);file.close();file.open(QIODevice::Truncate);file.close();file.open(QIODevice::WriteOnly);翻译 2017-02-13 16:29:06 · 25190 阅读 · 6 评论 -
Qt C++的函数不定参数
C++实现的函数不定参数 QList<QVariant> listVar; va_list pDebug; va_start(pDebug,type); //init 第二个一定要“...”之前的那个参数 do{ QVariant var= va_arg(pDebug,QVariant); listVar.push_back(var);原创 2017-03-04 15:16:46 · 3857 阅读 · 0 评论 -
关于Qt中识别硬盘盘符的相关
不说啥了,直接上代码:在网上找了三四个小时,好几种方法,但是调用windows API这种方法最简单, QFileInfoList list = QDir::drives(); //获取当前系统的盘符 bool bUsb = false; for(int i=0;i<list.count();i++){ qDe...翻译 2018-04-21 17:47:06 · 2269 阅读 · 0 评论 -
Qt的QDebug输出信息设置
qSetMessagePattern("[%{time process} %{function} %{line} %{threadid}] %{if-category}%{category}: %{endif}%{message}");拿去自己感受下,可以看Qt的帮助文档:搜索 qSetMessagePattern()学习...翻译 2018-04-25 14:56:27 · 1360 阅读 · 0 评论 -
QGraphicsItem绘制线段的不跟随Scene和View的缩放而变化
最近在做绘图相关的项目:有个需求就是,自定义了一个绘制线的类,但是,要保证绘制的线不跟随所在的Scene和View的变化而变化,就是一直保持稳定,找了很久,尝试过重写piant函数,但是那个都不是很好的办法, 最后,放弃了,,,但是,今天下班后,想加会班,就花时间看看那个问题,感觉其实我的方向一直都是错的,我之前一直关注点都在Scene和View,尤其是Item上面,忽略了一个重要的因素,就是,...原创 2018-04-20 19:04:09 · 2736 阅读 · 1 评论 -
Qt 下载
记录下Qt各版本的下载地址,便于后期查找及下载所有Qt版本下载地址: http://download.qt.io/archive/qt/所有Qt Creator下载地址: http://download.qt.io/archive/qtcreator/所有Qt VS开发插件下载地址: http://download.qt.io/archive/vsaddin/Qt相关下载大全 ...转载 2018-04-11 20:45:50 · 236 阅读 · 0 评论 -
Qt的布局类(QLayout)-- (记录使用布局的时候出现的问题)
1.使用QLayout类的时候,出现布局无效。原因,QLayout的parent必须是继承于QFrame类,否则是无效的。 2.QGraphicsScene使用QLayout,建议将QGraphicsScene和QGraphicsView的parent设为QFrame类:示例FrameGraphics *frame = new FrameGraphics(this); //FrameGrap...原创 2018-04-03 10:30:34 · 1413 阅读 · 0 评论 -
Qt中的QTableWidget数据导出为excel(转载)--记录
原博主不允许转载,此处贴链接: https://blog.youkuaiyun.com/FairyStepWGL/article/details/54576372转载 2018-04-03 09:50:11 · 3614 阅读 · 0 评论