QT 例子
文章平均质量分 52
lacoucou
这个作者很懒,什么都没留下…
展开
-
QT 异常处理 try...catch
pro文件添加:win* {QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHaQMAKE_CXXFLAGS_STL_ON = /EHa} CONFIG += exception文件中使用: QT_TRY { int i=0; int j=10/i; }QT_CATCH(...){ qDebug()<<"test"<<1; }这样就可以接收到异常,并且程序不会崩溃。原创 2022-04-29 11:41:04 · 11765 阅读 · 6 评论 -
QT窗口应用程序显示cmd窗口
带界面的qt程序显示一个cmd窗口,并且显示qDebug()输出的信息:void debug(){//https://forum.qt.io/topic/56484/solved-attach-console-to-gui-application-on-windows/4#include <windows.h>#include <stdio.h> // detach from the current console window // if la原创 2021-12-17 17:58:19 · 3367 阅读 · 2 评论 -
QT utf-16le 转QString
方法1:QByteArray bytes= QByteArray::fromBase64(/*base64 字符串*/);QString strxx=QString::fromUtf16(reinterpret_cast<const ushort*>(bytes.constData()),bytes.length());后边会出现部分乱码。方法2:QByteArray bytes= QByteArray::fromBase64(/*base64 字符串*/);QTe.原创 2020-12-23 15:19:44 · 1310 阅读 · 0 评论 -
QT 控件 保存用户数据
事实上不只是widget支持,只要是从QObject继承的都支持。设置值通过:bool QObject::setProperty(const char * name, const QVariant & value)Sets the value of the object's name property to value.If the property is defined in the class using Q_PROPERTY then true is returned on s原创 2020-10-23 11:41:28 · 889 阅读 · 0 评论 -
QT 子控件中获取祖父窗口的指针
子控件子类化,在类中获取顶层窗口的指针:方法1:一层一层往上回朔qDebug()<<this->parent()->parent()->parent()->parent();方法2: qDebug()<<this->topLevelWidget(); //这个不建议使用 qDebug()<<this->window();...原创 2020-10-19 18:56:20 · 2589 阅读 · 3 评论 -
QWidget::layout()函数的问题
QLayout * QWidget::layout() constReturns the layout manager that is installed on this widget, or 0 if no layout manager is installed.The layout manager sets the geometry of the widget's children that have been added to the layout.See also setLayout().原创 2020-08-19 18:23:54 · 904 阅读 · 1 评论 -
QTableView 多字段排序
前序文章:https://blog.csdn.net/lacoucou/article/details/105569434QSortFilterProxyModel 子类化排序研究参考文章https://blog.csdn.net/koilin/article/details/7752575最终效果:相关源码:...原创 2020-05-02 00:55:13 · 768 阅读 · 1 评论 -
QSortFilterProxyModel 子类化排序研究
本例中重要包含qtablevie,MyModel(QAbstractTableModel的子类),mysortmodel(QSortFilterProxyModel)的子类。触发排序的途径主要由一下几种:1.点击QTableView的表头触发排序。2.直接调用QTableView的函数进行排序:void QTableView::sortByColumn(int column, Q...原创 2020-05-01 23:06:14 · 1182 阅读 · 0 评论 -
qt5.14.2 qtcreator 添加源码调试
参考:https://www.cnblogs.com/dizf/p/12650533.htmlQt 针对 Windows 平台提供了两种安装包:MinGW版本: 使用MinGW作为默认编辑器,附带了GCC,GDB 等工具,在qtCreator中可以使用GDB 作为默认的调试器。MSVC版(VS2013 VS2015 VS2017..)使用MSVC作为默认编译器,需要使用CDB...转载 2020-04-19 13:02:33 · 5131 阅读 · 4 评论 -
QT 5.10尝鲜
下载地址:http://download.qt.io/official_releases/qt/5.10/5.10.0/选择 qt-opensource-windows-x86-5.10.0.exe变化:1.以往的版本分为msvc,MinGw等版本,这次全部统一放在一个安装包内了:安装出错:直接忽略。安装完成。似乎图标换了,其他更新留待以后补充。。。。。...原创 2018-02-11 21:02:07 · 1438 阅读 · 0 评论 -
QThreadPool 取消活动线程一例
QThreadPool 用起来倒是很方便,但是就是没有提供取消正在执行的线程任务的方法。现提供一个个人的解决办法:#ifndef CWORK_H#define CWORK_H#include #include class CWork : public QObject,public QRunnable{ Q_OBJECTpublic: explicit CWor原创 2018-02-07 15:49:15 · 4081 阅读 · 4 评论 -
QStringList 去除重复项算法赏析
测试用例: QStringList list; list<<"2222"<<"xxx"<<"1111"<<"2222"<<"xxxx"<<"1111"; int n=list.removeDuplica原创 2018-04-16 11:07:07 · 8060 阅读 · 2 评论 -
QWebView 拦截http请求,获取post数据
QWebView作为QT中自带的浏览器控件,使用简单方便,而功能强大。并且很容易通过扩展实现一些定制化需求。实际业务中遇到一个需求:需要加载某个网页,待用户选择表单选项并提交之后,拦截HTTP请求,获取其Post数据,加以修改 后重新提交请这求。查阅QT的官方文档,并没有找到相关功能可以实现,而网上这方面的资料也是少之又少,所以特意整理出来方便大家。注意事项:QWebView只在QT5.5以下的版...原创 2018-05-27 16:37:43 · 6246 阅读 · 0 评论 -
QTableView中文本根据内容自动换行
需求:当数据中有\n时,显示成两行。比如数据 11111\n222222显示成:111112222222解决办法参考文章:https://blog.csdn.net/xbnlkdbxl/article/details/51396336使用上述方法确实可以换行显示,但是存在单元格无法选中(或者说是选中此行时,此单元格不会高亮显示);另外,如果此单元格原文设置了颜色的话,也不会显示。针对上边的两个问...原创 2018-06-04 19:09:24 · 6900 阅读 · 0 评论 -
Qt用SVG图片作为背景图
svg可缩放,作为背景图十分方便。Based on Qt 5.5.1 (MSVC 2013, 32 bit)1.使用QSvgWidget//添加一个widget 提升为QSvgwidget QString strFile="Dharma_Wheel.svg";this->ui->svgWidget->load(strFile);2.QTreeWidget添加svg背景图片...原创 2018-06-14 11:09:45 · 3292 阅读 · 0 评论 -
QString::indexOf 的一个坑
QString::indexOf 主要作用是从一个字符串中查找另外一个字符或者字符串,如果找不到则返回-1,找到则返回位置。然而此函数有一个小坑需要注意:QString strTemp="test 1111 33333"int n=strTemp.indexOf("Test",Qt::CaseInsensitive);例如上边的代码,希望从strTemp中忽略大小写查找“test...原创 2019-03-12 17:52:07 · 20294 阅读 · 2 评论 -
QComboBox 隐藏列表项
比如一个QComboBox有四个列表项,分别是1234现在需要把3隐藏,需要的时候再显示出来。方法1:先删掉3,需要的时候再插入,这样可能导致index变化,有时候不是很实用。方法2:QListView* view = qobject_cast<QListView *>(combo->view());Q_ASSERT(v...转载 2019-06-13 17:38:19 · 3818 阅读 · 1 评论 -
QHeaderView添加右键菜单
需要实现一个这样的功能:在QTableView的表头点击右键可弹出菜单,点击菜单可隐藏QTableView中相对应的列,同时在右键菜单中添加一项,以便与之后显示之前隐藏的列。 众所周知,QTableView的表头是通过QHeaderView实现的。 QHeaderView * horizontalHeader() const而QHeaderView 又继承自QWidget,因此setCon原创 2017-04-11 10:21:45 · 2264 阅读 · 0 评论 -
QProcess bug
程序中需要给定一个文件路径,然后定位到此文件。代码如下:QString filePath="E:\\test\\1.txt"QProcess::startDetached("explorer.exe",QStringList()"/select,"QDir::toNativeSeparators(filePath));上边的代码可以正确定位到1.txt。 但是路径中包含某些特殊原创 2018-01-24 19:52:33 · 445 阅读 · 0 评论 -
Qt之界面数据存储与获取
原文:http://blog.csdn.net/liang19890820/article/details/52413012QObjectUserData 和QPushButton::setUserData(uint id,QObjectUserData* data)这两个帮助系统居然查不到,不知道什么鬼。原创 2017-09-22 17:57:59 · 2100 阅读 · 0 评论 -
QTableView 设置行间距
一直不满意QTableView的行间距,老是觉得太臃肿,空格太多,就像下图这样: 希望能调整成这样: 经过几天的尝试,不断的尝试,终于解决了,所以才有了此文,希望能对后来者有帮助:方法1.设置stylesheet (不起效)QTableView::item {height: 15px;}2.在视图的model中设置Qt::SizeHintRole (不起效)QVariant QT原创 2017-08-24 17:29:44 · 13680 阅读 · 3 评论 -
QTreeWidget 按数值排序
1.使用setData设置数值型值添加数据时,使用setData来设置数据:void QTreeWidgetItem::setData(int column, int role, const QVariant & value);这样点击排序的时候,将是两个QVariant 的比较,QVariant 对各种基础类型的比较都有重载。 比如:pTreeWidgetItem->setData(0,Qt::原创 2017-09-06 10:05:05 · 5171 阅读 · 0 评论 -
解决No “rule to make target `../skin_test.qss', needed by `debug/qrc_resource.cpp'. Stop.”
事情起因直接把工程目录下的skin_test.qss 改成test.qss 然后把qrc中的skin_test.qss 删除掉,并重新添加test.qss到资源中。 然而编译之后一直报错: rule to make target ../skin_test.qss', needed bydebug/qrc_resource.cpp’. Stop.。。。”解决过程1.删除debug/qrc_reso原创 2017-04-13 19:16:06 · 6652 阅读 · 0 评论 -
QT中QTableView 点击表头进行排序
今日,由于工作需要,要实现在QTableView中点击表头进行排序的功能,但QTableView中并未提供此功能,经过苦苦的网络搜索也为发现可用的代码。最后经过跟踪QTableWidget的排序功能实现,总算实现了此功能。 此文章将使用QT源码中自带的例子做为基础: (file source: examples/widgets/tutorials/modelview/4_headers/main原创 2017-03-11 14:40:24 · 19200 阅读 · 3 评论 -
QTableWidget 排序功能跟踪
最近为了实现QTableView的排序功能,通过网络搜索,未能找到解决办法,一时之下就跟踪了QTableWidget的排序功能,现在记录如下。新建一个Qt工程,拖入QTableWidget控件,并随便输入几个初始值,添加一个按钮,然后添加一句排序代码: this->ui->tableWidget->sortItems(0);上边这一行就是跟踪入口。具体实现1.sortItems的实现/*原创 2017-03-11 13:05:11 · 5896 阅读 · 0 评论 -
QListView使用学习--QStringListModel的使用
QT提供了model/view 结构来管理数据与展示数据。model提供数据模型,view展示数据,delegate会对数据项进行渲染。model,view,delegate通过信号/槽机制通信。QListView的使用比较方便,可选择的model比较多,既可以使用QStringListModel,也可以使用QStandardItemModel。QT4/5中的继承关系如下图:原创 2016-10-18 10:53:18 · 16402 阅读 · 3 评论 -
QT之抓取12306余票动态信息并显示
最近学习QT ,决定写点博客练练手。今天本来是想练习一下用正则表达式解析网页的表格,所以就找了12306的余票动态信息(12306余票动态信息)原来以为是一个静态页面,看了之后发现数据是JSON格式的,那就先练练json解析吧!1.找到票的数据来源。打开12306的余票动态信息(12306余票动态信息),在谷歌浏览器或者其他浏览器中按下F12,会出现调试窗口,选择Network选项原创 2016-08-14 21:26:35 · 1600 阅读 · 0 评论 -
QTextEdit 插入Html 表格(table)
业务需求:想要实现下图效果: 然而直接使用html代码:<table style="width: 124px; height: 88px;" border="1"> <tbody> <tr> <td style="background-color: rgb(255, 255, 102);">A</td> <td>1</t原创 2017-09-07 16:10:09 · 6922 阅读 · 2 评论 -
QT 开源项目由源码生成Pro项目文件
方法步骤: QT 将QMakelist 生成pro文件 1 在开始菜单找到Qt 命令行工具,打开控制台窗口(实际上执行一个.Bat文件,它会设置QT的环境变量),MingW 2 进入main.cpp所在目录,敲入qmake -project回车,作用是生成.Pro工程文件 3 再敲入qmake XXX.pro(XXX与目录名有关)回车,生成相关MakeFile文件 4 再原创 2017-09-16 14:15:47 · 1315 阅读 · 0 评论 -
QT 下调用python自定义模块
准备在QT中调用自定义python脚本,然而在实践中遇到的坑不少,经过一番摸索最终也解决了,特此记录,以便于有共同需求的人。1.创建工程新建一个GUI工程,添加一个QPushButton,在槽函数中写下如下 代码:#test.py 文件放在exe文件同目录下# -*- coding: cp936 -*-#定义hello函数,这个函数的功能是输出“hello world!”def hello(原创 2017-09-25 23:09:07 · 6319 阅读 · 5 评论 -
QT 文件拖放试验
在MainWindow 中放置一 QTableView,现欲让QTableView子类化之后接收文件拖放事件。代码如下:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include namespace Ui {class MainWindow;}class MainWindow : public QMainWindow原创 2018-01-11 12:47:24 · 492 阅读 · 0 评论 -
QT 与webkit(wke) 交互
使用的wke库来源:https://github.com/cexer/wke 参考示例: http://blog.csdn.net/u012814856/article/details/70312494?locationNum=1&fps=11。需要文件 https://github.com/cexer/wke/demo/libwke中的三个文件,放在工程目录wke文件夹中。2.QT工程 添加原创 2017-11-16 14:28:26 · 2504 阅读 · 0 评论 -
QT 字体设置的bug
在main函数中通过setfont函数设置的字体:void QApplication::setFont(const QFont &font, const char *className = Q_NULLPTR)只对QTextEdit,QLabel这些有效。 对QTreeWidget 和 QTableView 这些控件,设置的字体对QTreeWidgetItem这些有效,但是对QTreeWidget原创 2017-11-29 13:18:39 · 1441 阅读 · 0 评论 -
QT与JaveScript 交互
http://blog.csdn.net/charlessimonyi/article/details/50984903https://github.com/charlessimonyi/javascript_call_cpphttp://www.cnblogs.com/lucc/archive/2010/11/24/1886087.html转载 2017-10-17 11:00:16 · 276 阅读 · 0 评论 -
QSting 格式化
1.数字格式化 C语言中的%08X,在QT中格式化://QString arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) constint n=100; //0x64QString str=QString("%1").arg(n,8,16,QLatin1Char( '0' )原创 2017-09-19 18:53:37 · 1822 阅读 · 0 评论 -
QT 中使用BeaEngine 反汇编引擎
1.工程中右键–添加库 添加BeaEngine.lib2..pro 加上以下两句 已避免无法打开crt.lib的bug QMAKE_LFLAGS_DEBUG = /DEBUG /NODEFAULTLIB:crt.lib QMAKE_LFLAGS_RELEASE = /RELEASE /NODEFAULTLIB:crt.lib3.包含头问题//引用BeaEngine反汇编原创 2017-09-19 18:33:53 · 1665 阅读 · 0 评论 -
N个字符串插入分隔符
写程序时,经常遇到n个字符串插入n-1个分隔符格式化的问题: 比如有一个list:list=["1111","2222","3333"]想要达到输出效果:\"1111\",\"2222\",\"3333\"使用代码:string resultText;foreach(string text,list){ resultText+="\""; resultText+=text;原创 2017-09-11 16:58:24 · 1170 阅读 · 0 评论 -
QT 下调用lua自定义模块
1.环境准备下载地址 http://lua-users.org/wiki/LuaBinaries 转到http://luabinaries.sourceforge.net/ 最终下载地址 https://sourceforge.net/projects/luabinaries/files/5.3.4/Windows%20Libraries/Dynamic/下载动态链接库 下载下来文件结构为:2原创 2017-09-26 12:24:09 · 1346 阅读 · 0 评论 -
Qt::ActionsContextMenu 添加分割线 Separator
为了偷懒 所以使用了了Qt::ActionsContextMenu 来生成右键菜单,但是这样方便的同时却产生一个问题,没有办法在菜单中添加分割线:看遍了QWidget的函数,只找到了AddAction ,却找不到 addSeparator 。。。。。。。。。。。。。。后来想到既然QMenu 有 addSeparator 方法,我为什么不能照着造一个呢:打开源码原创 2016-08-07 19:11:19 · 9395 阅读 · 2 评论