Qt
文章平均质量分 70
Wyq_nathan
这个作者很懒,什么都没留下…
展开
-
Qt中序列化自定义对象
Qt中序列化数据的类是QDataStream,但这个类只能序列化基本类型和一部分Qt定义的类,对于自定义类需要自己编写序列化函数。在自定义类中声明友元函数,并实现:class CKDrawBase:{public: friend QDataStream & operator friend QDataStream & operator >> (QDataStr转载 2014-09-29 15:03:13 · 1861 阅读 · 0 评论 -
Qt之自定义界面(实现无边框、拖动至任务栏之上)
关于Qt的自定义标题栏,研究了一段时间,开始用的是Qt自带的,但是那个标题栏实在是太丑,而且在正式开发产品的时候也基本无用武之地,所以就必须进行界面的自定义!关于自定义界面的步骤:1、设置标题栏隐藏 //设置窗体标题栏隐藏并设置位于顶层 setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint转载 2014-01-20 09:50:12 · 1654 阅读 · 1 评论 -
Qt之等待提示框(QLabel进行多图片切换)
之前分享过的等待提示框有用QMovie播放gif图片实现的,也有纯代码实现的,今天再次分享另一种实现方式,如题目所示:QLabel进行图片的切换! 进行用户登录的时候,往往都需要后台线程进行用户信息的验证,而前台需要把对应的信息显示给用户,防止无休止的等待。当然,在其他耗时处理的时候也最好有相同的处理。 好了,相信大家都用过QQ吧!QQ、包括360等都存在相同的做法。转载 2014-01-20 09:49:10 · 2046 阅读 · 0 评论 -
Qt之系统托盘(QSystemTrayIcon详解)
托盘是什么?这个就不用在多说了!而Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘。。。 void TrayMenu::createActions() { //创建托盘项 action_show = new QAction(this); action_quit = new QAction(this);转载 2014-01-20 09:48:51 · 2216 阅读 · 0 评论 -
Qt之自定义搜索框
关于搜索框,大家都经常接触!Qt如何实现一个搜索框?It's so easy! Google浏览器 Windows计算机 直接上代码: QLabel *forward_path = new QLabel();QLineEdit *forward_line_edit = new QLineEdit();QLin转载 2014-01-17 14:35:38 · 1322 阅读 · 0 评论 -
Qt之透明提示框(模拟QQ)
Qt实现类似QQ的登录失败的提示框,主要涉及窗口透明并添加关闭按钮,以及图标和信息的显示等。直接上代码: #include "error_widget.h" ErrorWidget::ErrorWidget(QWidget *parent) : QWidget(parent){ int width = parent->width(); thi转载 2014-01-17 14:31:11 · 1190 阅读 · 0 评论 -
Qt之自定义提示框二(右下角冒泡)
网页右下角上经常会出现一些提示性的信息,B/S有的东西,C/S当然也可以有,就像QQ的消息提示一样!实现一个类似的东西并不困难,只要想明白原理实现起来就很简单了! 实现原理:(1)显示:右下角缓慢弹出,定时器启动,逐渐改变位置即可,到达相应位置,停止计时器(2)驻留:定时器启动,让界面停留一定的时间,相应的时间过后停止定时器(3)退出:可以直接退出,转载 2014-01-17 14:25:15 · 1407 阅读 · 0 评论 -
Qt之自定义提示框(类似QMessageBox)
Qt中经常会用到提示框,用于交互操作!QMessageBox是被大多数人用到的,用起来是很方便,但是控件类型、大小、布局、样式、往往不是开发者想要的,如果使用一套不经过样式处理的界面交给用户,那么结果可想而知。。。 简单举个例子吧! QMessageBox::information(NULL, QString("title"), QString("I am inform转载 2014-01-17 14:23:25 · 3869 阅读 · 0 评论 -
Qt之QComboBox(基本应用、代理设置)
QComboBox下拉列表比较常用,用户可以通过选择不同的选项来实现不同的操作,如何实现自己的下拉列表呢? 很多人在问QComboBox如何设置选项的高度、代理等一些问题!今天就在此分享一下自己的一些小心得。。。 一、基本应用 QComboBox *network_type = new QComboBox(); 1、设置样式:转载 2014-01-17 14:11:28 · 1170 阅读 · 0 评论 -
Qt之密码框不可全选、复制、粘贴无右键菜单等
在做用户登录界面的时候,往往会用到密码框,则其中的一些功能也要求与普通的输入框不同,包括不能全选、复制、粘贴、无右键菜单等、设置密码不可见等功能! #include "pwd_line_edit.h"PwdLineEdit::PwdLineEdit(QWidget *parent) : QLineEdit(parent){ //设置无右键菜单 this->s转载 2014-01-20 09:50:05 · 1160 阅读 · 0 评论 -
QTableWidget之表头塌陷、光标移动
在接触Qt的这段时间里,用的比较多的还属QTableWidget,真是让人欢喜让人忧,很长一段时间里,被两个Bug困扰着,今天,一鼓作气,全部拿下! 1、表头塌陷 现象1: 现象二: 现象介绍: 这其实属于同一种情况,就是在表格中只有一行的时候选中该行表头就会塌陷也会被选中,全选的会后也会出现以上现象!之前的解转载 2014-01-20 09:49:51 · 1907 阅读 · 0 评论 -
QImage图像格式小结
嗯,这个QImage的问题研究好久了,有段时间没用,忘了,已经被两次问到了,突然有点解释不清楚,我汗颜,觉得有必要重新总结下了,不然无颜对自己了。 图像的数据是以字节为单位保存的,每一行的字节数必须是4的整数倍,不足的补0。 (因为我们使用的是32操作系统,因此数据是按照32位对齐的,所以每行的字节数必须是4的整数倍也就是说每行的数据位必须是32位的整数倍。)这里是转载 2014-01-26 13:28:50 · 721 阅读 · 0 评论 -
QCompleter自动补全
知识永远是那么多,想到什么就总结什么,今天记录一下关于我对QComplete的一些小见解。官方文档中叙述如下: 可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能,如:QLineEdit和QComboBox。当用户开始输入一个字符,QCompleter根据单词列表提示完成单词。这个单词列表是作为一个QAbstractItemModel被提供的(对转载 2014-01-17 09:26:46 · 1653 阅读 · 0 评论 -
Qt之模型/视图(自定义风格)
关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下。 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风格,使用QSS + Qt二维绘图已经绰绰有余了。当然,如何让界面更美观,这个没有什么捷径,我只能说一句:无他,唯手熟尔!基本功搞转载 2014-01-17 09:09:11 · 1401 阅读 · 1 评论 -
Qt之日志输出窗口
继上节所讲,Qt可以很容易的将一些日志信息保存到文件中,那么日志信息如何输出到窗口呢? 用过VS或者其他IDE的童鞋对日志输出到窗口应该都很熟悉,开发者可以打开一个输出窗口很清晰的查看一些日志信息。例如VS,如下:代码如下:**********log_browser.cpp**********#include转载 2014-01-16 15:57:41 · 4539 阅读 · 0 评论 -
Qt之日志输出文件
在Qt开发过程当中经常使用qDebug等一些输出来调试程序,但是到了正式发布的时候,都会被注释或者删除,采用日志输出来代替。 做过项目的童鞋可能都使用过日志功能,以便有异常错误能够快速跟踪、定位,Qt也提供的类似的机制。之前用Qt4做项目时使用的是Qt::qInstallMsgHandler(),到了Qt5,使用了新的Qt::qInstallMessageHandler()来替代,详转载 2014-01-16 15:56:36 · 1430 阅读 · 0 评论 -
Qt之生成pdf
Qt中如何让图片、文本、HTML或者其他形式的内容生成pdf呢?主要利用QPrinter来实现,QPrinter不止可以操作打印机来打印纸张文件,并且可以将文件保存至磁盘,存储为pdf格式的文件。图片生成pdf代码如下:QPrinter printer_pixmap(QPrinter::HighResolution);printer_pixmap.setPa转载 2014-01-16 15:28:43 · 1573 阅读 · 0 评论 -
QMenu的个性化定制
经常使用菜单,菜单的定制相当重要,普通的样式设置不难,一般需求足以实现(QMenu + QAction)。如果要足够个性,则需要进行一定的定制。 说起定制,其实也是利用Qt中现成的组件进行组装而已,使用QMenu + QWidgetAction + QAction,再加上QSS美化就可实现个性的QMenu。先看效果(模仿酷狗、360安全卫士所做的一个托盘菜单)转载 2014-01-14 15:54:54 · 1313 阅读 · 0 评论 -
如何在每一个单词上显示QToolTip
相信大家都用过词典吧!因为英语不太好。。。呵呵,所以经常进行划词翻译!如何实现的呢?个人理解:鼠标移动至某单词之上,先进行取词,然后进行翻译! 好了,如何用Qt进行取词呢,看效果! 思路:捕获ToolTip事件,将鼠标下的单词取出,进行ToolTip显示!代码如下:#incl转载 2014-01-14 15:52:31 · 1168 阅读 · 0 评论 -
Qt之阴影边框
阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知道box-shadow,它就是来设定阴影效果的,那么Qt呢?看过一些资料,说是QSS是基于CSS2的,既然如此,box-shadow是基于CSS3的!那么Qt定然就用不了! 搜了一些资料,每张图片都做成阴影效果的固然不可能,直接舍弃(即使可以,也不采纳)。如果实时的去画图,效率太低,最后选择了拼图转载 2014-01-17 14:07:03 · 1348 阅读 · 0 评论 -
Qt之再谈阴影边框
前面就窗口阴影已经写过一篇博客,使用九宫格的思路实现的,在我看来,凡是用程序能实现的尽量不要使用图片代替(在保证效率的前提下),今天再次分享关于我的一些小见解! 先看效果: 窗口阴影任意调节,包括阴影像素、是否圆角等。 直接上代码:void DropShadowWidget::paintEvent(QPaintEvent *eve转载 2014-01-17 13:59:14 · 1310 阅读 · 0 评论 -
NSIS 打包 win7 中无法删除快捷方式
NSIS打包的安装程序,在Vista中的安装过程中如果向开始菜单添加了快捷方式的话,在卸载时卸载程序会不能正常删除这些快捷方式。这 主要是因为Vista中使用UAC控制用户的权限。我们使用NSIS打包程序一般会配套使用相应的脚本编辑器,比如HM NIS Edit,或者国内高手对HM NIS Edit进行源代码级增量改进之后的HM VNIS Edit,但是这两个软件都已经很久没有更新转载 2014-03-18 10:42:01 · 841 阅读 · 0 评论 -
Qt下使用的静态链接库------ *.lib转化为mingw使用的.a格式的静态库
Qt下使用的静态链接库------ *.lib转化为mingw使用的.a格式的静态库 【转载】 2010-11-01 16:10:06| 分类: 软件|举报|字号 订阅使用MinGW附带的工具reimp.exe,该工具一般在MinGW in目录下,其readme文档在MinGWdoc eimp目录下,方法很简单,比如:C:转载 2014-04-16 15:14:28 · 1246 阅读 · 0 评论 -
QSplitter QTreeView QFileSystemModel 简单使用
QSplitter QTreeView QFileSystemModel 简单使用#include int main(int argc, char *argv[]){ QApplication application(argc, argv); QSplitter *splitter = new QSplitter; // 继承自QFrame, 默认横转载 2014-03-31 14:48:29 · 251 阅读 · 0 评论 -
QSplitter QTreeView QFileSystemModel 简单使用
#include int main(int argc, char *argv[]){ QApplication application(argc, argv); QSplitter *splitter = new QSplitter; // 继承自QFrame, 默认横向分割几个在一块的widget splitter->setChildrenCollapsible(转载 2014-03-31 14:50:03 · 1022 阅读 · 0 评论 -
QWidget与HWND的互相转换
QWidget与HWND的互相转换在编写Windows的应用程序时,我们有时不可避免地要与Windows平台固有的Win32 API打交道,但是Win32 API里面常常用到的HWND等诸多句柄QT并没有。QT作为一款优秀的跨平台GUI库,不可能未作考虑,那么需要互相转换的时候该如何做呢? HWND转QWidget123转载 2014-03-24 11:06:39 · 834 阅读 · 0 评论 -
QT应用程序单实例运行
QT应用程序单实例运行我们经常会做一些软件、程序只希望有最多一个运行实例。我从网上找到了个方法,虽然现在还不太明白原理,但是这种方法总算会用了。原文摘自:http://dev.firnow.com/course/3_program/c++/cppxl/20100531/206675.html123456转载 2014-03-24 11:18:38 · 810 阅读 · 0 评论 -
QTabWidget添加关闭子标签功能
QTabWidget添加关闭子标签功能,QTabWidget 有个属性 tabsClosable ,将其设置为True即可出现关闭按钮。 默认情况下,每个标签上的关闭按钮是没有任何响应的,我们需要自己动手为他添加关闭响应。 关闭信号为 void tabCloseRequested(int index) 关闭函数为 void removeTab(int index) 注意关闭标签的是一个普通公共转载 2014-03-26 16:24:21 · 3401 阅读 · 1 评论 -
QT中封装的IP地址的widget
QT没有提供一个完整的IP地址控件,1. 可以使用QLineEdit简单的实现 QRegExp regExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"); QRegExpValidator *pValidator = new QRegExpValidator(转载 2014-06-04 09:15:04 · 753 阅读 · 0 评论 -
Qt之拖放
拖放是应用程序内或者多个应用程序之间传递信息的一种直观的操作方式。除了为剪贴板提供支持之外,通常还提供数据的移动和复制功能。 拖放操作包括两个截然不同的动作:拖动、放下。Qt窗口部件可以作为拖动点(drag site)、放下点(drop site)或者同时作为拖动点和放下点。 下面介绍如何让一个Qt应用程序接收一个拖动操作,当用户从桌面或者文件资源管理器中拖动一个文件到转载 2014-03-28 16:07:20 · 931 阅读 · 0 评论 -
Qt限制鼠标移动范围
Qt限制鼠标移动范围更多GUI C++ C/C++ QT几个月前,我编写一个截图程序,这个截图程序有涂鸦功能,在我遇到了一个难题,那就是在涂鸦的时候如何才能让光标只在特定的区域内移动?一开始我的想法是,设置setMouseTracking为true,然后重载void QWidget::mouseMoveEvent(QMouseEvent * event)转载 2014-03-27 14:41:31 · 3878 阅读 · 0 评论 -
Qt之图标切分与合并
有些时候会将多张有相同功能的图片绘制成一张,不管是使用或者绘制上都会方便很多。对美工与开发者来说也都是一件省事、省力、更省心的方式。二全其美,又何乐而不为呢。。。例如:QQ等级 0-9可以组成很多种不同的数字等级(不多做解释)!绘制多张图片来描述不同的等级吗?那么请问得绘制多少张呢?想都不敢想。如上方式,已经完全解决了这个问题。转载 2014-01-17 13:46:02 · 1077 阅读 · 0 评论 -
Qt之自定义菜单(右键菜单)
在接触Qt这段时间以来,经常遇到菜单项的问题(右键菜单、托盘菜单、按钮菜单等),QMenu用于菜单栏,上下文菜单,弹出菜单等,利用QMenu+QAction就可以达到效果! 右键菜单实现:通过重写contextMenuEvent(QContextMenuEvent *event)事件,QMenu+QAction即可完美实现! 对象:QTreeWidget转载 2014-01-17 11:42:55 · 3800 阅读 · 0 评论 -
Qt之自定义菜单(托盘菜单)
继右键菜单之后,再次探讨托盘菜单。。。也许你对有些东西会感觉到莫名其妙,但大致思路不变,因为这些东西都是我根据实际项目所述。 托盘菜单实现:通过QSystemTrayIcon+QMenu+QAction即可完美实现! 实现方式:createActions用于创建菜单、菜单项,translateActions用于设置文本、实现多语化,translateAccount用于设置转载 2014-01-17 11:40:55 · 1708 阅读 · 0 评论 -
Qt之自定义菜单(按钮菜单)
再次探讨Qt的菜单,按钮菜单也是很常用的东东,使用QPushButton(QToolButton)+QMenu+QAction即可完美实现! 实现方式:createButton用于创建按钮以及菜单,translateLanguage用于设置文本、实现多语化。void WatermarksToolWidget::createButton(){ re转载 2014-01-17 11:38:51 · 2840 阅读 · 0 评论 -
Qt之开机自启动
Windows开机自启动的程序很多,包括系统软件、杀毒软件、一些其他安装软件等等。当然可以禁止,通过软件管理或者手动删除对应的注册表中的项即可!但是为了系统的服务或者操作上的方便,我们往往需要开机自启动一些服务。 以下是开机的启动项: Qt也不例外,在发布Qt程序的时候,我们通常也需要开机自启动自己的程序,那么如何实现呢?主要采用修改注册表的方式。代码比转载 2014-01-17 11:15:37 · 1058 阅读 · 0 评论 -
Qt之鼠标样式
Qt中可以自定义鼠标样式,无乱是为了美观,还是遵从同行业标准,或者说是界面友好性都是需要了解,甚至是熟知。在此记录一下,以供不时之需。使用setCursor(Qt::CursorShape)来设置鼠标样式,Qt::CursorShape包含以下选项:1、正常选择Qt::ArrowCursor效果:2、后台运行Qt::BusyCursor转载 2014-01-17 09:39:51 · 1455 阅读 · 0 评论 -
Qt之模型/视图(委托)
概念 不同于模型 - 视图 - 控制器模式,模型/视图设计不包括用于管理与用户交互的一个完全独立的组件。一般情况,视图负责将模型数据呈现给用户以及处理用户输入。为了输入更加具有灵活性,则由委托来执行交互。这些组件提供输入功能,且在一些视图中还负责渲染个别项目。控制委托的标准接口在QAbstractItemDelegate类中定义。 委托能够通过实现的paint()和sizeHi转载 2014-01-17 09:02:23 · 867 阅读 · 0 评论 -
Qt中给MainWindow设置布局管理
Qt中给MainWindow设置布局管理: QGridLayout *main_layout = new QGridLayout(); main_layout->addWidget(image_label); main_layout->addWidget(centralWidget()); QWidget *widget = new QWidget(this);原创 2014-03-04 14:08:48 · 2750 阅读 · 0 评论 -
Qt之添加可执行程序图标
你还在为应用程序没有图标烦恼吗?如果是,请往下看。。。 Qt的应用程序设定图标不仅是因为美观,更是为了直观,乍眼一看就知道它代表什么。。。先看下图: 其实很多东西在Qt助手里面已经说的很清楚了。 好了,打开Qt助手,搜索“Setting the Application Icon”,如下所示: 文档内容我不多做介绍,转载 2014-01-14 15:58:47 · 607 阅读 · 0 评论