Qt
文章平均质量分 57
limilie
用着学,学着用
展开
-
学习记录-MySQL使用问题记录
MySQL版本 5.7.12删除主表记录,同时删除关联子表记录,在创建表的外键时添加一下设置,删除时直接删除主表,关联表数据自动删除,多级关联表也可删除ON DELETE CASCADE ON UPDATE CASCADE例子:主表CREATE TABLE `t_lj_file_info` ( `F_ID` INT(11) NOT NULL AUTO_INCREMENT, `F_NAME` VARCHAR(100) NULL DEFAULT NUL PRIMA...原创 2020-09-26 18:04:32 · 142 阅读 · 0 评论 -
学习记录-Qt中使用Q指针和D指针
总结网上看到的文章,使用D指针的好处如下:1.保证代码的二进制兼容性;2.隐藏实现细节;3.提高编译速度;Qt关于D指针和Q指针的定义:d_ptr指针指向私有实现类,使用如下宏定义辅助函数和声明友元类#define Q_DECLARE_PRIVATE(Class) / inline Class##Private* d_func() { return re...原创 2018-11-10 17:11:22 · 4255 阅读 · 2 评论 -
学习记录-使用QTabWidget在析构时需要注意的问题
为了实现一个自定义的tab界面,使用QTabWidget和自定义的Tab,逐一将自定义的tab添加到QTabWidget上,并连接了切换tab的信号到自定义的槽函数上。结果在控件析构时软件死机,调试跟踪到在delete控件时出现了segmentfault,经一步调试发现,是在删除自定义tab控件时,本来不应该发射currentIndexChanged信号的,但是却在槽函数里收到了多次信号。仔细分析原创 2017-04-22 13:41:11 · 1597 阅读 · 0 评论 -
学习记录-Qt信号和槽使用遇到的问题记录
信号和槽的连接方式1.自动连接2.队列连接3.直接连接信号和槽参数的传递问题1.同一个线程内2.不同的线程间原创 2017-01-12 15:50:51 · 476 阅读 · 0 评论 -
学习记录-Qt将调试信息保存到文件
如果能将调试信息打印到文件,那软件发布到其他机器运行时,就可以记录软件运行的异常情况了。查看手册,Qt 的QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )函数可以安装一个自定义的消息处理函数,自带的例子如下: #include #include #include void myMessageOutput(QtMs原创 2016-11-16 21:14:15 · 2334 阅读 · 0 评论 -
学习记录-Qt之QString格式化字符串
1.自动补零int val = 16;// 0fQString str = QString("%1").arg(val & 0xFF, 2, 16, QLatin1Char('0'));// 0016QString str = QString("%1").arg(val, 4, 10, QLatin1Char('0'));原创 2019-03-12 16:53:41 · 8047 阅读 · 0 评论 -
学习记录-Qwt6.1.0编译安装
由于要使用画图功能,于是网上查找,发现多数例子使用qwt库进行绘制。按照网上找的文章从官网下载了qwt6.1.0源码,解压后,在qwt-6.1.0目录下打开命令窗口,qmake成功产生qwt.pro,但使用mingw32-make编译时,编译到designer文件夹时出现错误经分析,发现默认产生的makefile中引用moc.exe生成moc_**.*文件的命令引用有问题,少了一个斜杆,打开m原创 2015-08-12 09:27:27 · 794 阅读 · 0 评论 -
学习记录-Qt布局中的Spacer使用
在自定义控件后,使用自定义控件进行布局时,采用网格布局,当窗口大小合适,动态创建的空控件数量也合适时,那么控件之间的空白处比较小,能布满窗口,效果比较好看,但是当控件较小或者控件较少时,就都居中显示了。不想要这种效果,想要一种自动靠左对齐或者靠右对齐的方式来显示,该怎么实现呢,Qt布局器中的Spacer就可以解决这个问题。原创 2016-09-27 22:40:53 · 49786 阅读 · 0 评论 -
学习记录-Qt文件的读写和删除等操作
Qt提供了QFile类对文件操作,Qt还提了QTextStream类和QDataStream类对文件操作,对于处理临时文件可以使用QTemporaryFile,而获取文件信息则可以使用QFileInfo。目录可以使用QDir,监视文件和目录变化使用QFileSystemWatcher。QFile 类提供了读写文件的接口,QFile类可以读写文本文件、二进制文件和Qt资源文件,也可以用更原创 2015-09-30 18:59:59 · 8649 阅读 · 0 评论 -
学习记录-Qt读取条码扫描枪
一、条码简介 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。原创 2016-03-08 22:33:12 · 13738 阅读 · 3 评论 -
学习记录-Qt删除文件夹
写的软件需要进行文件夹的复制,开始不怎么懂就找了个拷贝文件夹的代码测试了一下,运行程序选择了源目录和目标目录相同进行拷贝,结果悲剧了。因为是递归拷贝,导致文件夹被嵌套N层,软件死机,强制结束后,产生的文件夹有N多层,右键删除说文件名太长无法删除。网上找了很多方法都无法清理掉这个嵌套的文件夹,折磨了N久,终于想通,既然是Qt生成的嵌套文件夹,为何不用Qt再写一个删除的程序呢?于是动手查看help,找原创 2015-12-22 22:39:49 · 17228 阅读 · 3 评论 -
学习记录-Qt在win7下安装opencv库
经过一天的折腾,终于成功运行opencv程序。把过程记录一下。环境:win7+Qt4.7.0+qt creator 2.4.1 ,没有安装MS的编译工具。1.下载opencv2.3.1官网:http://opencv.org/downloads.html下载cmake最新版,网址:www.cmake.org2.将opencv解压到E:/opencv目录(自己随便选择目录),cm原创 2015-08-19 18:36:24 · 546 阅读 · 0 评论 -
学习记录-Qt中控件的坐标
使用Qt做了个界面,因为使用软键盘不能使用模态窗口,故自己使用frame做了一个自定义的弹窗,为了实现可拖动效果,重写鼠标事件,但遇到了控件坐标的问题,怎么样获取鼠标落在控件事件进行处理。网上查看了几篇文章,子控件的坐标需要由父控件计算而来,实际验证后发现,坐标区域不正确。后来尝试将子控件的坐标映射到全局,就正常了。实现的效果是鼠标左键按住标题框可以拖动窗口。主要代码:protected:原创 2015-08-17 18:41:49 · 1972 阅读 · 0 评论 -
学习记录-Qt环境的编译
网上找了很多教程,也学习到了很多,但是和自己的环境毕竟还是有许多差别,在这里记录一下自己的编译学习过程,以及遇到的问题。使用的是友善tiny6410开发板。1.在官网下载源代码,我使用的是qt-everywhere-opensource-src-4.8.5.tar.gz。2.fedora下linux X11平台tar zxvf qt-everywhere-opensource-sr原创 2015-08-10 17:41:33 · 582 阅读 · 0 评论 -
学习记录-Qt监听键盘ESC按键
在软件主机面(继承自QWidgets),需要识别用户按下ESC键后,弹出退出登录对话框。自然想到要使用EventFilter重写进行按键监听,但尝试后发现无法实现,于是进一步使用keyPressEvent重写进行按键监听,经验证可行。重写按键事件:void MainWindow::keyPressEvent(QKeyEvent *event){ switch(event->key(原创 2014-12-12 10:23:28 · 7111 阅读 · 0 评论 -
学习记录-Qt按键单击后延迟一段时间触发下一个函数执行
QTimer::singleShot(1000, this, SLOT(on_pushButton_pcba_readfilename_clicked()));项目中,需要按键单击后发送一条指令,等待一段时间后在发另一条指令,看文档发现使用如上方式可以实现原创 2014-12-09 11:38:56 · 2810 阅读 · 0 评论 -
学习记录-Qt获取文件路径
看书提到使用QFileDialog::getOpenFileName()函数可以获得选定目录下的文件名,但我只要选择路径。查看Qt帮助,找到这个函数,直接获取路径,不用选择一个文件后在把路径提取出来。QString pathDir = QFileDialog::getExistingDirectory(this, tr("打开目录"),"/",QFileDialog::ShowDirsOnly原创 2014-12-03 09:45:53 · 856 阅读 · 0 评论 -
学习记录-Qt窗口控件的动态添加和删除
一般用Qt写软件,使用designer创建一个窗口,拖几个控件进行一下布局就够用了,但有些需求,需要自定义各种类型的控件,并且很多控件需要根据数据的交互,动态的添加和删除,为此学习了一下Qt的实现方法,在此记录之。方法是,使用布局的addWidget函数添加控件,删除时使用removeWidget函数,需要设置控件的deleteLater属性,也可以使用delete直接删除。void原创 2016-07-02 18:28:55 · 27418 阅读 · 4 评论 -
学习记录-Qt的多工程管理
当一个项目比较大时,使用单个工程管理,源文件数量就比较多,看起来不爽,研究一下划分模块并进行多工程管理就显得比较重要。基本上在网上能查阅到的中文类Qt的pro文件的编写,大致可以知道,新建立一个子项目,然后再在里面添加子项目或者项目就可以建立起一个多工程的项目了。但是,有个问题一直找不到原因,新建一个子项目,在里面再建一个子项目和普通项目,保证源码没有错误的情况下,编译能勾通过,但是运行却原创 2016-07-15 15:34:11 · 771 阅读 · 0 评论 -
学习记录-对Qt的QLineEdit进行输入字符限制
查看帮助文档,了解到Qt对文本框的输入限制是使用QValidator和QRegExp来进行处理。QValidator *validator_10=new QIntValidator(0,99999,this);QRegExp rx;rx.setPattern("(0x[0-9a-fA-F]{1,4})|(0X[0-9a-fA-F]{1,4})"); //只接受4位16进制数据Q原创 2016-07-28 10:07:54 · 10624 阅读 · 0 评论 -
学习记录-Qt编写自定义控件
自定义一个带表格的窗口控件。很多时候,Qt自带的基本控件满足不了我们的需求,但是可以使用Qt的基本控件构造我们所需的控件。以下是我掌握的方法,记录一下。需求是:一个自定义的控件上,能动态的添加和删除自定义的另一个控件。主要两种方式:一种是使用QtDesigner拖控件实现,另一种是纯代码实现。我采用拖控件的方式。首先,新建一个界面类,选择一个基础部件,是选用的是QFrame,然后使用D原创 2016-09-27 22:23:10 · 2340 阅读 · 0 评论 -
学习记录-QTableView自定义委托实现QCheckBox复选框
之前就遇到表格里内嵌复选框的问题,网上查了好多资料也没有完全解决,今天花时间研究和实验后基本搞定。使用的是自定义委托的方式,重写了panit函数和editorEvent函数实现指定列内嵌复选框,单击实现选中状态切换和改变单元格大小复选框也在中间。主要思路:paint函数里进行复选框的绘制,并实时读取模型数据显示状态,editorEvent函数里判断单元格点击情况进行处理。源代码如下:原创 2016-09-19 00:39:14 · 10216 阅读 · 11 评论 -
学习记录-linux下GDB的简单使用
操作系统:fedora9工具链:gcc-4.4.3调试工具:GDB新建一个源文件:gdb_test.c#include void fun1(){ printf("I'm fun1!\n");}int main(){ int a = 3, b = 4, c; printf("this is a test!\n"); fun1(); c原创 2016-03-15 10:52:38 · 307 阅读 · 0 评论 -
学习记录-QCheckBox使用setChecked初始设置没有信号的解决方法
有时候,界面中的checkbox需要和槽函数配合做一些事情,但是初始化的时候,使用setChecked设置选中或不选中,都不会发出信号,以前就遇到这个问题了,没有深入研究过。今天尝试了下,发现使用如下方式可以解决这个问题。 BIT_DEFINE1 ck; ck.all = 0; ck.all = c; ui->chkR1->setChecked(ck原创 2016-08-02 12:29:35 · 4939 阅读 · 1 评论 -
学习记录-Qt创建按键菜单
自定义一个窗口部件的时候,并不会像QmainWindow那样自带菜单部件,此时需要给他添加一个菜单,如下:void BoxFrame::createMenu(){ //自定义部件 QWidget *wd = new QWidget; QPushButton *btn = new QPushButton("按键"); QHBoxLayout *layout =原创 2016-09-23 11:42:23 · 1198 阅读 · 0 评论 -
学习记录-QComboBox下拉菜单显示提示信息
使用代理在tableview里嵌入Qcombobox,由于默认列宽较小,导致下拉菜单显示下拉后,条目文字显示不完整,于是想到做一个提示信息,使用QtToolTip显示下拉菜单的条目完整信息。如下关键代码:QComboBox* editor = new QComboBox(parent);QStandardItemModel *model = new QStandardItemModel(原创 2016-08-12 23:49:20 · 8252 阅读 · 2 评论 -
学习记录-tableview委托之按键问题记录
Qt的tableview实现按键委托的问题:1、使用一般的方法,即只是用createEditor、setEditorData、setModelData、updateEditorGeometry 这几个函数实现的话,每次必须双击单元格,才会显示出按键;2、绘制的按钮大小不会随着单元格的变化而变化;为了解决这两个问题使用paint函数和editorEvent函数替换createEdit原创 2016-06-22 22:53:36 · 748 阅读 · 0 评论 -
学习记录-Qt MDI子窗口显示大小调整
看了Qt的关于MDI窗口的例子,自己写了个自定义的窗口,发现每次显示都是最小化的。尝试了很多设置,都没效果,最后发现在创建子窗口,并调用show函数后,再设置当前活动窗口的大小就行了。即:DlgMPower *dlg = new DlgMPower;mdiArea->addSubWindow(dlg);dlg->show();mdiArea->activeSubWindow()->res原创 2016-06-22 15:59:22 · 6730 阅读 · 2 评论 -
学习记录-Qt标准对话框
Qt中的标准对话框有以下:1.文件对话框(QFileDialog)1) 打开目录QString getExistingDirectory ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnl原创 2015-01-27 10:57:29 · 558 阅读 · 0 评论