<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/talkingmute</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; talkingmute]]></copyright><item><title><![CDATA[qt中QFileSystemModel和QStringListModel使用]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/126241701</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/126241701</guid><author>talkingmute</author><pubDate>Tue, 09 Aug 2022 10:59:41 +0800</pubDate><description><![CDATA[/把树形视图的点击信号和表格视图的设置开始节点槽函数关联起来，达到在树形视图里每次点击，就在表格视图里显示对应的文件列表的目的。//再修改节点对象的值，传递上边的节点对象，要修改的值。...]]></description><category></category></item><item><title><![CDATA[字符数组学习]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/125364781</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/125364781</guid><author>talkingmute</author><pubDate>Mon, 20 Jun 2022 00:26:28 +0800</pubDate><description><![CDATA[字符数据学习笔记]]></description><category></category></item><item><title><![CDATA[VC中GDI绘图技术基础知识：hdc设备环境句柄，坐标系]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/124584579</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/124584579</guid><author>talkingmute</author><pubDate>Thu, 05 May 2022 11:24:39 +0800</pubDate><description><![CDATA[VC中GDI绘图技术：

》》通过HDC设备环境句柄绘图有三种方式：标准客户区绘图，临时客户区绘图，非客户区绘图

1-标准客户区绘图，是在WM_PAINT消息回调时执行，调用BeginPaint函数，EndPaint函数。

2-临时客户区绘图，是在任何消息回调时都可以执行，调用GetDc获取临时客户区句柄进行绘图，最后调用ReleaseDc释放。

3-非客户区绘图，是在WM_NCPAINT消息回调时执行，针对一些窗口标题和边框的绘制，是调用GetWindowDc获取句柄进行绘图，最后调用Release]]></description><category></category></item><item><title><![CDATA[qt中操作多个数据库时的注意事项]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/122098764</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/122098764</guid><author>talkingmute</author><pubDate>Thu, 23 Dec 2021 07:31:30 +0800</pubDate><description><![CDATA[当我们有时需要操作多个数据库时，可能会这样写：


db=QSqlDatabase::addDatabase("QSQLITE");

...


db=QSqlDatabase::addDatabase("QSQLITE");

...

这样运行会出现警告：QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
]]></description><category></category></item><item><title><![CDATA[qt中添加mysql驱动插件的详细教程]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/122096499</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/122096499</guid><author>talkingmute</author><pubDate>Wed, 22 Dec 2021 22:43:45 +0800</pubDate><description><![CDATA[在qt中如需要mysql数据库相关开发，需要先安装对应的驱动插件，否则会提示错误。

这里具体讲解下如何安装mysql驱动插件：

1-先下载myslq数据库的开发包，将里面lib目录下的这两个文件复制：



粘贴到qt对应编译环境的bin目录下：



2- 找到qt源码目录下mysql工程，打开它：



修改里面的.pro文件如下：






INCLUDEPATH +="E:\mysqlsrc\include"


LIBS +="E:\mysqlsrc\lib\libmysql.lib"...]]></description><category></category></item><item><title><![CDATA[qt5中基于QObject派生的线程创建应用方法]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/122072829</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/122072829</guid><author>talkingmute</author><pubDate>Tue, 21 Dec 2021 20:51:40 +0800</pubDate><description><![CDATA[基于QObject派生的类创建多线程应用，是新学习qt朋友比较难掌握的，这里详细示范下如何操作：

1-首先创建一个工作线程类：


#include &lt;QObject&gt;



//定义我们的工作线程，派生于QObject


class workthread : public QObject


{


    Q_OBJECT


public:


    explicit workthread(QObject *parent = nullptr);


    void workfun.]]></description><category></category></item><item><title><![CDATA[qt中利用正则表达式提取字符串中的浮点数和整数]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/121948961</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/121948961</guid><author>talkingmute</author><pubDate>Wed, 15 Dec 2021 11:47:03 +0800</pubDate><description><![CDATA[当我们需要从一个字符串中提取数字时，可以用正则表达式来操作


    QString str = "你的金额是： 0.22示范33^%zd卡兹克44是13.5x的5&amp;ss";



    QRegExp rx("\\d+\\.\\d+|(\\d+)");//定义正则表达式，前面是浮点数的规则，后面是整数的规则



    QList&lt;float&gt; list;


    int pos = 0;



    while ((pos = rx.indexIn(str, pos)) ]]></description><category></category></item><item><title><![CDATA[qt5中信号和槽连接，对于多种参数重载的处理]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/120254054</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/120254054</guid><author>talkingmute</author><pubDate>Sun, 12 Sep 2021 18:37:54 +0800</pubDate><description><![CDATA[//因为QSpinBox的valueChanged信号有重载，为避免二义性，需要通过声明函数指针方式，来进行信号和槽的连接。


    void (QSpinBox::*p)(int)=&amp;QSpinBox::valueChanged;//函数指针p前要加类名作用域符号


    connect(ui-&gt;spinBox,p,ui-&gt;horizontalSlider,&amp;QSlider::setValue);


    connect(ui-&gt;horizontal...]]></description><category></category></item><item><title><![CDATA[qt中自动补全qcompleter使用]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/120211362</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/120211362</guid><author>talkingmute</author><pubDate>Thu, 09 Sep 2021 22:23:46 +0800</pubDate><description><![CDATA[可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能，如：QLineEdit和QComboBox。当用户开始输入一个字符，QCompleter根据单词列表提示完成单词，它需要传递一个QStringList来构造QCompleter。


   QStringList list;


    //list内容根据需求自行添加


    list &lt;&lt; "andy" &lt;&lt; "6789" &lt;&lt;"baby";



    QCompleter *complet]]></description><category></category></item><item><title><![CDATA[qt中模态对话框和非模态对话框]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/120204844</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/120204844</guid><author>talkingmute</author><pubDate>Thu, 09 Sep 2021 16:54:44 +0800</pubDate><description><![CDATA[模态对话框是会阻塞程序窗口的用户操作，必须要关闭后才可以进行后续的执行。而非模态对话框则不会阻塞用户操作，更灵活些，只是要注意设置一个关闭时自动释放内存的属性。


    QDialog dlg;


    dlg.setWindowTitle("模态对话框");


    dlg.resize(400,400);


    dlg.exec();


    QDialog *pdlg=new QDialog;


    pdlg-&gt;setWindowTitle("非模态对话框");


]]></description><category></category></item><item><title><![CDATA[qt中自定义信号和槽函数，信号重载]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/120189829</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/120189829</guid><author>talkingmute</author><pubDate>Wed, 08 Sep 2021 21:56:21 +0800</pubDate><description><![CDATA[关于自定义信号和槽函数，是qt中最常用的。信号就相当于函数声明，没有返回值，可以带参数，需要signals开头。在connect连接时，最好使用qt5函数指针的方法，在访问类中的成员函数时前面要加对应类的作用域：类名::

头文件中：


signals:


    void mysig();


    void mysig(int ,QString);


private slots:


    void myslot1();


    void myslot2(int ,QString);

源]]></description><category></category></item><item><title><![CDATA[qt中事件分发器event和事件过滤器eventFilter使用]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/120177771</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/120177771</guid><author>talkingmute</author><pubDate>Wed, 08 Sep 2021 13:13:34 +0800</pubDate><description><![CDATA[在qt中窗口部件接收到主程序的消息映射后，会进入到事件分发器模块，就是event虚函数接口，我们可以在该接口里进行特定事件的自定义处理。而当窗口部件需要过滤某一事件时，可以使用事件过滤器模块，就是eventFilter虚函数接口。

对于事件分发器使用，需要先在指定控件头文件里声明，这里是一个自定义控件mylabel：


protected:


    bool event(QEvent *e);

再在源文件中实现：


bool mylabel::event(QEvent *e)


{


   ]]></description><category></category></item><item><title><![CDATA[关于qt不规则窗体的应用设置]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/119836993</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/119836993</guid><author>talkingmute</author><pubDate>Sat, 21 Aug 2021 11:10:59 +0800</pubDate><description><![CDATA[qt中不规则窗体应用，大多是没有边框、背景透明的，而且是可以随着鼠标按下移动的


    //去掉窗口边框


    this-&gt;setWindowFlag(Qt::FramelessWindowHint);


    //设置背景透明


    this-&gt;setAttribute(Qt::WA_TranslucentBackground);


    //this-&gt;setGeometry(0,0,200,200);//设置窗口位置和大小

对于不规则窗口的移动，需要重载鼠标]]></description><category></category></item><item><title><![CDATA[再谈qt中的绘图设备QPixmap,QImage,QPicture]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/119809796</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/119809796</guid><author>talkingmute</author><pubDate>Thu, 19 Aug 2021 19:56:23 +0800</pubDate><description><![CDATA[qt中的绘图操作，是通过QPainter这个绘图对象类，在绘图设备上进行。绘图设备除了QWidget窗体外，还有QPixmap,QImage,QPicture这三种：


    //QPixmap主要是用于显示，只能在主界面UI线程中使用，和具体平台有关。


    //而QImage主要是用于网络传输，支持多线程，和平台无关。


    QPixmap pix(200,200);//定义一个QPixmap绘图设备，相当于一张画布


    pix.fill(Qt::green);//指定填充颜色
]]></description><category></category></item><item><title><![CDATA[qt中QPainter绘图操作介绍]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/119755175</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/119755175</guid><author>talkingmute</author><pubDate>Tue, 17 Aug 2021 14:05:17 +0800</pubDate><description><![CDATA[QPainter是qt中绘图操作要用的绘图类，相当于一个画家。而绘图设备类QPainterDevice是相当于要绘画的画板，要在哪里绘画。画笔类QPen就是手里拿的画笔，有什么颜色、像素大小等。画刷类QBrush就是在一个封闭区域要画什么用的。

头文件中，需要先声明paintEvent函数，这是绘图操作都必须要重载的虚函数：


protected:


    void paintEvent(QPaintEvent *);


void smallwidget::paintEvent(QPaintEve]]></description><category></category></item><item><title><![CDATA[qt中有关定时器的两种实现方式]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/119742129</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/119742129</guid><author>talkingmute</author><pubDate>Mon, 16 Aug 2021 21:35:55 +0800</pubDate><description><![CDATA[关于定时器，qt中有两种实现方式：

1-基于QObject的startTimer接口，int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer)，第一个参数是时间间隔（毫秒单位），该接口返回一个定时器的ID，后面关闭定时器或者定时器响应函数需要用到，记得保存该ID。

在头文件中，需要重写timerEvent虚函数，当定时器事件发生时触发。


protected:


    void timerEve]]></description><category></category></item><item><title><![CDATA[qt中sqlite数据库操作方法]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/117440527</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/117440527</guid><author>talkingmute</author><pubDate>Tue, 01 Jun 2021 16:58:28 +0800</pubDate><description><![CDATA[在qt的sqlite数据库编程中，需要先在工程文件添加：


QT       += core gui sql

在工程头文件中添加对应qtsql头文件，声明QSqlDatabase类对象，以及自定义的数据库初始化接口DbInit。


#include &lt;QtSql&gt;    

QSqlDatabase db;


bool DbInit();


还有一些数据库操作的槽函数：
private slots:


    void GetDbRecord();


    void AddRec]]></description><category></category></item><item><title><![CDATA[qt中带进度条的浏览器应用]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/117040054</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/117040054</guid><author>talkingmute</author><pubDate>Wed, 19 May 2021 18:25:37 +0800</pubDate><description><![CDATA[在qt中对于浏览器应用，是使用的QWebEngineView类，通过load方法加载要浏览的url网址，并调用show来显示。而进度条是使用QProgressBar类，可以在任意控件通过addWidget方法显示出来。


    //初始化进度条


    progressbar=new QProgressBar;


    //把进度条添加到任务栏


    ui-&gt;statusBar-&gt;addWidget(progressbar);


    //初始化WebEngineView浏]]></description><category></category></item><item><title><![CDATA[qt中进程间共享内存通讯]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/115680245</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/115680245</guid><author>talkingmute</author><pubDate>Tue, 13 Apr 2021 21:54:34 +0800</pubDate><description><![CDATA[共享内存是进程间通讯最快捷的方法，qt中是有QSharedMemory类提供相关接口，配合着QBuffer缓存，QDataStream数据流这些类完成。


QSharedMemory m_sm;


m_sm.setKey(tr("mysharememory"));


void MainWindow::on_btnSmWrite_clicked()
{
  QBuffer buffer;
  QDataStream datas;
  int size;
  if(m_sm.isAttac...]]></description><category></category></item><item><title><![CDATA[qt中QPixmap和QImage使用]]></title><link>https://blog.youkuaiyun.com/talkingmute/article/details/115585552</link><guid>https://blog.youkuaiyun.com/talkingmute/article/details/115585552</guid><author>talkingmute</author><pubDate>Sat, 10 Apr 2021 22:31:14 +0800</pubDate><description><![CDATA[QPixmap 针对绘图进行了优化，一般用于显示加载，和平台相关。而QImage则主要是为图像I/O传输、图片访问和像素修改等操作，和平台无关，可以用来优化UI响应时间。


    QString openfilename=QFileDialog::getOpenFileName(this,tr("选择一个图片"),tr(""),tr("图片文件 (*.png *.jpg *.bmp)"));


    QImage image;


    if(!image.load(openfilename)).]]></description><category></category></item></channel></rss>