<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[w0131的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/w0131</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; w0131]]></copyright><item><title><![CDATA[链接时报错：undefined reference to vtable 原因以及解决办法]]></title><link>https://blog.csdn.net/w0131/article/details/126668247</link><guid>https://blog.csdn.net/w0131/article/details/126668247</guid><author>w0131</author><pubDate>Fri, 02 Sep 2022 17:59:03 +0800</pubDate><description><![CDATA[链接时报错：undefined reference to vtable 原因以及解决办法]]></description><category></category></item><item><title><![CDATA[关于 warning: comparison between pointer and integer]]></title><link>https://blog.csdn.net/w0131/article/details/118356002</link><guid>https://blog.csdn.net/w0131/article/details/118356002</guid><author>w0131</author><pubDate>Wed, 30 Jun 2021 10:37:04 +0800</pubDate><description><![CDATA[http://www.voidcn.com/article/p-eaedhhlx-hc.html
当是BYTE类型 ，可以用NULL，
当是Char类型，要用‘/0’或者0，要不然会出警告

]]></description><category></category></item><item><title><![CDATA[typedef]]></title><link>https://blog.csdn.net/w0131/article/details/118088744</link><guid>https://blog.csdn.net/w0131/article/details/118088744</guid><author>w0131</author><pubDate>Mon, 21 Jun 2021 16:12:36 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar]]></description><category></category></item><item><title><![CDATA[SQLite学习]]></title><link>https://blog.csdn.net/w0131/article/details/117439060</link><guid>https://blog.csdn.net/w0131/article/details/117439060</guid><author>w0131</author><pubDate>Tue, 01 Jun 2021 15:35:39 +0800</pubDate><description><![CDATA[sqllte3有五种基本类型,sqlite3会把其他数据类型转换成以下5类基本数据类型。

1.null，blob？转化为NULL类型。

2.integer类型转换为INTEGER类型。

3.real?double和float类型转换为REAL类型。

4.char,clob?test和varchar类型转换为TEXTl类型。

5.其余数据类型都转换为NUMERIC类型。

实例：

新建一个数据库：sqlite3 test.db

如果数据库test.db已经存在，则命令就会在当前目录下打开test]]></description><category></category></item><item><title><![CDATA[printf(%02hhx)]]></title><link>https://blog.csdn.net/w0131/article/details/117254380</link><guid>https://blog.csdn.net/w0131/article/details/117254380</guid><author>w0131</author><pubDate>Tue, 25 May 2021 13:55:36 +0800</pubDate><description><![CDATA[1.hh ：表示以一个char类型一个字节打印

2.h ：表示以一个short类型两个字节打印

data :12345678

printf("%02hhx,%02hx,%02x\n",data,data,data)；

结果：78，5678，12345678

tip:只读取两位，如果超过两位如实打印，如果不够两位，将补0.



%x 是以十六进制打印一个整数(4个字节）



例如：

char a = '\xAB';

printf("%02X", a);  //FF FF FF A...]]></description><category></category></item><item><title><![CDATA[QT学习：布局管理]]></title><link>https://blog.csdn.net/w0131/article/details/116653280</link><guid>https://blog.csdn.net/w0131/article/details/116653280</guid><author>w0131</author><pubDate>Tue, 11 May 2021 14:57:23 +0800</pubDate><description><![CDATA[1.基本布置管理器-水平布局，垂直布局。

2.栅格布局管理器

3.表单布局管理器

从部件栏中找到Form Layout,将其拖入到界面中，然后双击或者在它上面右击，选择“添加窗体布局行“菜单。

4.可扩展窗口

一般情况下button为触发方式默认为trigger,只有设置为checkable的时候，触发为toggled，默认checkable是不选中的，button默认为触发按钮（trigger button）,按下去马上弹起来。选中checkable后，button变成切换按钮（toggle）,]]></description><category></category></item><item><title><![CDATA[QT学习：QFrame类族]]></title><link>https://blog.csdn.net/w0131/article/details/116602298</link><guid>https://blog.csdn.net/w0131/article/details/116602298</guid><author>w0131</author><pubDate>Tue, 11 May 2021 10:22:51 +0800</pubDate><description><![CDATA[QFrame类是带有边框的部件的基类，它的子类有最为常用的标签部件QLabel,另外还有QLCDNumber,QSplitter,QStackedWidget,QToolBox和QAbstractScrollArea类，QAbstractScrollArea类所有带有滚动区域的部件类的抽象基类，这里需要说明的是在QT中带有Abstract字样的类都是抽象基类。

带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame类的主要功能也就是用来实现不同的边框效果，lineWidth是边框边界的线得宽度，]]></description><category></category></item><item><title><![CDATA[pthread_detach()函数]]></title><link>https://blog.csdn.net/w0131/article/details/116521714</link><guid>https://blog.csdn.net/w0131/article/details/116521714</guid><author>w0131</author><pubDate>Sat, 08 May 2021 11:47:52 +0800</pubDate><description><![CDATA[创建一个线程默认的状态是joinable.

如果一个线程结束运行但没有被join，则还有一部分资源没有被回收。

所以创建线程者应该调用pthread_join来等待线程运行结束（功能并不是结束线程），并可得到线程的退出代码。回收其资源。

但是调用pthread_join（pthread_id)后，如果该线程没有运行结束。调用者会被阻塞，在有些情况下我们并不希望如此。

比如在Web服务器重当主线程为每个新来的链接创建一个子线程进行处理的时候，主线程并不希望因为调用pthread_join而阻塞（因为还]]></description><category></category></item><item><title><![CDATA[ftok函数（）]]></title><link>https://blog.csdn.net/w0131/article/details/116203319</link><guid>https://blog.csdn.net/w0131/article/details/116203319</guid><author>w0131</author><pubDate>Tue, 27 Apr 2021 16:04:40 +0800</pubDate><description><![CDATA[ftok函数的作用

问:很多操作IPC，例如消息队列，共享内存等的时候，常常的key并不是直接写死的，而是用ftok返回的键值作为IPC键值，请问这样做有什么好处吗？直接写死，或者写到配置文件中不是也一样吗？
答:ftok的第一个参数是一个文件的路径名称.一般在应用系统中,使用$HOME或者应用系统的根目录作为它的值.这样产生的key_t就不会与系统中其他的软件和系统的相同了,从而避免造成冲突. （当以文件为第一个参数时，如果文件的大小发生变化，生成的Key也会响应变化，应注意 ）
如果,你使用配制文件,]]></description><category></category></item><item><title><![CDATA[QT学习：错误信息对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115768557</link><guid>https://blog.csdn.net/w0131/article/details/115768557</guid><author>w0131</author><pubDate>Fri, 16 Apr 2021 17:42:43 +0800</pubDate><description><![CDATA[#incldue&lt;QErrorMessage&gt;

QErrorMessage *dialog = new QErrorMessage(this);
 dialog-&gt;setWindowTitle("错误信息对话框");
 dialog-&gt;showMessage("这里是出错信息！");

这里新建一个QErrorMessage对话框，并且调用它的showMessage()函数来显示错误信息，调用这个函数时对话框会以非模态得形式显示出来。
...]]></description><category></category></item><item><title><![CDATA[QT学习：进度对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115764776</link><guid>https://blog.csdn.net/w0131/article/details/115764776</guid><author>w0131</author><pubDate>Fri, 16 Apr 2021 16:36:17 +0800</pubDate><description><![CDATA[添加#include&lt;QProgressDialog&gt;

void MyWidget::on_pushButton_6_clicked()

{

 QProgressDialog dialog(tr("文件复制进度"),tr("取消"),0,50000,this);

 dialog.setWindowTitle("进度对话框"); //标题


  dialog.setWindowModality(Qt::WindowModal);   //将对话框设置为模态
  dia...]]></description><category></category></item><item><title><![CDATA[QT学习：消息对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115763911</link><guid>https://blog.csdn.net/w0131/article/details/115763911</guid><author>w0131</author><pubDate>Fri, 16 Apr 2021 16:04:22 +0800</pubDate><description><![CDATA[添加#incldue&lt;QMEssageBox&gt;


void MyWidget::on_pushButton_3_clicked()
{
 //问题对话框
int ret1 = QMessageBox::question(this,tr("问题对话框"),tr("你了解Qt吗?"),QMessageBox::Yes,QMessageBox::No);
if(ret1 == QMessageBox::Yes)
qDebug()&lt;&lt;tr("问题！");
//提事对话框
int ret2.]]></description><category></category></item><item><title><![CDATA[QT学习：输入对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115756376</link><guid>https://blog.csdn.net/w0131/article/details/115756376</guid><author>w0131</author><pubDate>Fri, 16 Apr 2021 13:29:05 +0800</pubDate><description><![CDATA[添加#include&lt;QInputDialog&gt;

void MyWidget::on_pushButton_clicked()
{
 bool ok；
 //获取字符串
 QString string =QInputDialog::getText(this,tr("输入字符串对话框"),tr("请输入用户 名："),QLineEdit::Normal,tr("admin"),&amp;ok);
 if(ok) qDebug()&lt;&lt;"str...]]></description><category></category></item><item><title><![CDATA[QT学习：字体对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115753202</link><guid>https://blog.csdn.net/w0131/article/details/115753202</guid><author>w0131</author><pubDate>Fri, 16 Apr 2021 11:49:52 +0800</pubDate><description><![CDATA[添加#include&lt;QFontDialog&gt;头文件

void MyWidget::on_pushButton_3_clicked()

{

 //ok用于标记是否单击了Ok按钮。然后获得选择的字体

 bool ok;

 QFont font = QFontDialog::getFont(&amp;ok,this);

 //如果单击OK按钮，那么让“字体对话框”使用新字体

 if（ok）

 ui...]]></description><category></category></item><item><title><![CDATA[QT学习：颜色对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115732072</link><guid>https://blog.csdn.net/w0131/article/details/115732072</guid><author>w0131</author><pubDate>Thu, 15 Apr 2021 17:32:33 +0800</pubDate><description><![CDATA[首先新建Qt Gui应用，打开.ui文件，添加按钮。

然后进入”颜色对话框“按钮的clicked()单击信号槽。

更改如下：

void MyWidget::on_pushButton_clicked()

{

 QColor color = QColorDialog::getColor(Qt::red,this,tr("颜色对话框"))；

 qDebug()&lt;&lt;"color:"&lt;&lt;color；

}

这里使用了QColorD...]]></description><category></category></item><item><title><![CDATA[QT学习：多窗口切换]]></title><link>https://blog.csdn.net/w0131/article/details/115703352</link><guid>https://blog.csdn.net/w0131/article/details/115703352</guid><author>w0131</author><pubDate>Wed, 14 Apr 2021 17:52:13 +0800</pubDate><description><![CDATA[在QT中使用信号和槽机制来完成对象之间的协同操作。简单地说，信号和槽都是函数，比如单机窗口上的一个按钮想要弹出一个对话框那必须将整个按钮的单击信号和定义的槽关联起来。

第一步双击.ui文件，在设计模式中添加一个label（我是主界面） 和push button(显示子窗口)，

第二步打开MyWIdget类声明写上槽声明：

 public slots:

 void showChildDialog();

这里自定义了一个槽，槽必须声明为slots,这里使用了public...]]></description><category></category></item><item><title><![CDATA[QT学习：forward declaration of class Ui::MyWidge的解决]]></title><link>https://blog.csdn.net/w0131/article/details/115700761</link><guid>https://blog.csdn.net/w0131/article/details/115700761</guid><author>w0131</author><pubDate>Wed, 14 Apr 2021 16:46:37 +0800</pubDate><description><![CDATA[每当你新建一个QT设计界面，QT会自动生成对应的yyy.ui文件。

观察.ui文件，注意name = "Form",默认都是整个名字。但是具体会按照你创建时改变。

当你在你的头文件中引用此界面时，

创建一个命名空间如

namespace Ui{

class xxx;

}

这里的XXX应与.ui文的中的name必须保持一致，否则就会导致如标题一样的错误。
...]]></description><category></category></item><item><title><![CDATA[QT学习：模态和非模态对话框]]></title><link>https://blog.csdn.net/w0131/article/details/115671856</link><guid>https://blog.csdn.net/w0131/article/details/115671856</guid><author>w0131</author><pubDate>Tue, 13 Apr 2021 18:01:55 +0800</pubDate><description><![CDATA[#include "mywidget.h"
#include "ui_mywidget.h"
#include &lt;QDialog&gt;
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui-&gt;setupUi(this);
QDialog dialog(this);
dialog.show();
QDialog dialog2(this);
dialog2.exec();
}
MyWi..]]></description><category></category></item><item><title><![CDATA[QT学习：窗口与子部件]]></title><link>https://blog.csdn.net/w0131/article/details/115665168</link><guid>https://blog.csdn.net/w0131/article/details/115665168</guid><author>w0131</author><pubDate>Tue, 13 Apr 2021 15:16:29 +0800</pubDate><description><![CDATA[Qt Creator提供默认基类只有QMain Window,QWidget和QDialog这三种。

QMainWindow是带有菜单栏和工具栏的主窗口类

QDialog是各种对话框的基类，而它们全部继承自QWidget.

#include &lt;QtGui&gt;
#include &lt;QtWidgets&gt;
int main(int argc,char *argv[])
{
 QApplication a(argc,argv);

 //在代码中可以使用中文字符串

//新建...]]></description><category></category></item><item><title><![CDATA[QT学习：4.用命令行编译ui文件和程序]]></title><link>https://blog.csdn.net/w0131/article/details/115490366</link><guid>https://blog.csdn.net/w0131/article/details/115490366</guid><author>w0131</author><pubDate>Wed, 07 Apr 2021 17:10:18 +0800</pubDate><description><![CDATA[1.第一步创建目录，复制hellodialog.ui和main.cpp文件。

2.第二部编译.ui文件。打开Command Prompt，然后进去该目录，使用命令

绝对路径\uic -o ui_hellodialog.h hellodialog.ui

3.第三步：

绝对路径\qmake -project

绝对路径\qmake

绝对路径\make

cd debug

.exe


...]]></description><category></category></item></channel></rss>