
Qt
文章平均质量分 62
闭上左眼看世界
这个作者很懒,什么都没留下…
展开
-
Qt :QGraphicsScene管理QGraphicsItem(单击/选择/移动/缩放/删除)
本文转载大神作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820.简述在图形视图框架中,QGraphicsScene 提供一个快速的接口,用于管理大量 item,QGraphicsItem 是场景中 item 的基类。图形视图提供了一些典型形状的标准 item,当然,我们也可以自定义 item。除此之外,QGraphicsItem 还支持以...转载 2018-02-21 19:39:47 · 20871 阅读 · 2 评论 -
Qt : 窗口最小化时自定义操作.
当我们对窗口的显示进行修改的时,有时候需要添加一些操作,这个时候就知道下面操作的重要性了://首先给当前窗口安装事件过滤器.this->installEventFilter(this);以下实现了通过事件过滤器把窗口最小化时的事件给优先处理了.用户可以自定义一些自己的操作.bool c::eventFilter(QObject *o, QEvent *e){ ...原创 2018-02-19 19:24:03 · 2746 阅读 · 2 评论 -
Qt : Qt中图像的显示与基本操作
Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。Qt可显示的图像类型参考Qt的帮助文档,可支持的类型,即可以直接读取并显示的格式有BMP、GIF、JPG、JPEG、PNG、TIFF、PBM、PGM、PPM、XBM、XPM。Qt用如何显示图像通常用QLabel显示图像,QLabel类有set...转载 2018-02-10 09:28:47 · 844 阅读 · 0 评论 -
Qt : QThread中的互斥、读写锁、信号量、条件变量
在gemfield的《从pthread到QThread》一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题。关于这个问题,gemfield在《从进 程到线程》中有一个比喻,有必要重新放在下面温习下:最后用一个比喻来总结下: 1、一个进程就好比一个房子里有一个人; 2、clone创建线程就相当于在这个房子里添加一个人; 3、fork创建...转载 2018-02-10 09:22:19 · 5379 阅读 · 0 评论 -
Qt : QProcess进程类
在Qt中,可以用QProcess类来打开其他的进程.如下代码:c::c(QWidget *parent) : QWidget(parent){ ui.setupUi(this); connect(ui.runNotepadButton, SIGNAL(clicked()), this, SLOT(showNodepadSlot()));}void c::s...原创 2018-02-09 14:31:26 · 1133 阅读 · 0 评论 -
Qt : 自定义委托类.子类化QStyledItemDelegate
由于QListWidget的子项都是单列的.所以能显示的不太多,但是如果使用listWidget->setItemWidget();方法的话,内存的开销又有点大.所以有一些信息可以用画的方式绘图出来,先看下简单的效果:像QListWidget,QTableWidget这些都属于视图类.默认都带有基础的Delegate.当我们想要给视图的子项更多种的显示方式的话,子类化QStyledItem原创 2018-02-06 13:10:12 · 2633 阅读 · 0 评论 -
Qt 的线程与事件循环
今天看了篇线程与事件处理的博客,感觉挺好,就转载下来啦~原文地址:(http://blog.csdn.net/skc361/article/details/12969193),虽然较长,但是耐心看下去,还是会有收获滴!周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解。从来只看到现象,这次借 db转载 2018-02-03 16:23:43 · 1138 阅读 · 0 评论 -
Qt : 信号与槽连接的优化.
包括我在内,很多的初学者在连接信号与槽的时候,都是使用一个信号对应一个槽函数.像下面这样: m_firstButton = new QPushButton("first",this); m_secondButton = new QPushButton("second",this); connect(m_firstButton, SIGNAL(clicked()),原创 2018-02-03 15:58:37 · 952 阅读 · 6 评论 -
Qt : 自定义鼠标.
在Qt中,Qt给我们列举了n多种鼠标的形状,然而更多的时候我们喜欢以一些别的图片作为鼠标比较有趣.下面有个自定义鼠标的小程序:就和画图一样,每点击一个按钮,鼠标显示不同的样式. :主要是使用了QCursor的一个带图片的构造函数,QCursor cursor(QPixmap());然后让QWidget去设置光标即可. 如果用户点击右键,则光标恢复初始状态.#ifndef C_H#de原创 2018-02-02 13:26:53 · 2509 阅读 · 1 评论 -
Qt : 事件总结
在Qt中,感觉事件无处不在,只要用户进行了操作,就会发生事件,发出各种信号.就算用户没有操作,有时候也会有定时器在其中运作,当然定时器也是一种事件.首先,我们要知道哪些属于事件?常见的事件主要有:绘图事件(paintEvent),定时器事件(timerEvent),进入事件(enterEvent),离开事件(leaveEvent),鼠标事件(QMouseEvent),键盘事件(QKeyEven原创 2018-01-30 22:56:01 · 1965 阅读 · 1 评论 -
Qt : 启动摄像头.
见识过了QQ等社交软件的视频功能,就想看看Qt是否封装了相关的类.然后做了下面一个小demo,一个简单的摄像头.下面给出代码:由于拖拽的布局,有些人看不太懂,所以我全部用的代码手工实现….觉得烦的朋友不要在意啦~#include "c.h"c::c(QWidget *parent) : QWidget(parent){ ui.setupUi(this);原创 2018-01-27 16:49:29 · 1418 阅读 · 1 评论 -
Qt : 主窗口中添加布局和删除布局的问题.
1.主窗口添加布局.都知道在QWidget中,进行布局很简单,直接类似如下即可: QPushButton *firstButton = new QPushButton(); QPushButton *secondButton = new QPushButton(); QPushButton *lastButton = new QPushButton(); /原创 2018-01-27 13:03:50 · 9496 阅读 · 2 评论 -
Qt : 记事本demo(附全部源码)
回想起学习Qt已经快四个多月了,还记得我写的第一个小项目,就是windows系统下的记事本程序,也就是我们习惯称为的notepad.早上把之前写的代码拿出来看了,说真的,看笑了自己,以前写的代码感觉好幼稚,很多地方写的都很不好,包括命名习惯,函数的封装等等…所以我今天花了点时间,把这个程序重新写了一遍,基本上让别人看我的代码,看上去思路还是挺清晰好懂的!notead主要实现了以下功能: 1.原创 2018-01-22 21:53:59 · 8502 阅读 · 9 评论 -
Qt : 通讯录小demo(附全源码)
下面来看下程序的效果:该程序主要实现了以下几个功能: 1.对QListWidget子项的显示进行了修改,同时显示了姓名,电话,地址,头像等. 2.在QListWidget控件的不同位置点击右键菜单,产生不同的菜单提供给用户操作. 3.在添加用户的对话框中,对电话输入框进行了输入限制. 4.用户可以自己提供图片作为头像,窗口对外来图片的操作.“c.h”的代码:#ifnde原创 2018-01-21 13:50:04 · 7433 阅读 · 4 评论 -
Qt : 可扩展对话框的实现
这里是一个简单的可扩展对话框的小例子:窗口可扩展,但是各部件的位置没有变化. #include "c.h"c::c(QWidget *parent) : QWidget(parent){// ui.setupUi(this); QGridLayout *layout = new QGridLayout(this); m_nameLabel = new Q原创 2018-01-19 14:18:15 · 580 阅读 · 0 评论 -
Qt: 通过注册表类QSetinggs存储数据,配置文件.
注册表的打开方式:win+R运行窗口,输入regedit即可.成功的把数据写入到了自己定义的一个文件中. 把数据储存到数据表中.void writeData(){ //默认在Software中. QSettings app("xxx", "mainWidget"); //进入一个组,叫做"property".没有就创建. app.beginGroup("Prope原创 2018-01-18 12:49:57 · 2076 阅读 · 0 评论 -
Qt : QScrollArea的使用,解答为什么无法出现滚动条.
下面是一个简单的QScrollArea的效果: 下面为上面gif动画的实现: //图片为300*300.把图片放到label中. QImage image("./1.png"); QLabel *label = new QLabel(this); label->resize(300,300); label->setPixmap(QPixmap::fr原创 2018-01-17 10:27:32 · 10433 阅读 · 0 评论 -
Qt: 图片旋转的特效
当我在火影中文网准备看动漫时,突然发现以下的场景,于是我也想做一个类似的效果. 完成后的效果如下: 实现这个效果主要有几个点要能够实现出来: 1.如何实现旋转效果. 2.重写进入控件和离开控件的虚函数.首先,重写了一个QLabel类.“MyLabel.h”的代码:#ifndef MYLABEL_H#define MYLABEL_H#include #incl原创 2018-01-14 22:45:45 · 3356 阅读 · 2 评论 -
Qt: windows修改切换桌面背景的风格(居中,平铺,拉伸等).
在上一篇通过修改注册表的桌面背景图的路径,来改变桌面图的切换,但是没有说到桌面背景风格的切换问题. 桌面背景的风格通常有:填充 ,居中,适应,拉伸,平铺等显示风格.下面我们通过修改注册表来修改这些属性: 通过测试发现: 拉伸在注册表中的数值是2.适应是6,填充是10.而平铺和居中都是0.那么如何区分并设置平铺和居中呢? 原来在注册表中还有一个额外标识:TileWallpaper.它的值为0原创 2018-01-12 14:45:09 · 2340 阅读 · 1 评论 -
Qt: windows下设置指定图片填充形成桌面背景.(实测)
之前在网上各种找关于Qt中,让图片设置为桌面背景的方法,结果,在win7,win8上都显示黑屏的,好在…我总算试出了一张方法可以实现这点.首先,我们打开注册表: 看图找到树状图的这个位置: 我们会发现桌面图是在这里设置的.下面贴出代码:QSettings wallPaper("HKEY_CURRENT_USER\\Control Panel\\Desktop", QSe原创 2017-12-28 15:02:15 · 1925 阅读 · 1 评论 -
Qt: 制作透明无边框提示窗口.
制造完成后就是这样的一个透明提示框:代码如下://设置窗体无边框.this->setWindowFlags(Qt::FramelessWindowHint);this->setFixedSize(200,100);//设置窗口背景.QPalette palette;palette.setColor(QPalette::Window,Qt::gray);this->setPalette(pa原创 2017-12-27 13:39:47 · 1787 阅读 · 0 评论 -
Qt 如何让窗口一直保持置顶状态或无边框状态.
//让窗口一直保持置顶.this->setWindowFlags(Qt::WindowStaysOnTopHint);//让窗口变成无边框的状态.this->setWindowFlags(Qt::FramelessWindowHint );原创 2017-12-27 13:21:37 · 8465 阅读 · 2 评论 -
Qt 打开指定路径下的文件目录
// 假如我现在要打开"c:/users/administrator/desktop/cocos2dx"这个文件夹//只需要调用桌面服务类的打开,通过返回值判断是否成功打开.bool ok = QDesktopServices::openUrl(QUrl("c:/users/administrator/desktop/cocos2dx"));但是我们这里会遇到一个问题:QUrl的构造函数中的参原创 2017-12-26 20:18:36 · 19558 阅读 · 0 评论 -
Qt中对文件的拷贝删除重命名等操作
1.删除指定路径的文件.//删除文件.返回一个bool值,判断是否成功删除,如果路径不存在这些,则返回false.QFile file("c:/users/administrator/desktop...");bool ok = file.remove();//因为QFile::remove()是个静态方法,可以直接调用.bool ok = QFile::remove("c:/users/a原创 2017-12-26 19:53:16 · 22813 阅读 · 3 评论 -
Qt学习: 文件相关常用QDir路径类和QFileInfo类.
当我们打开图片时,通常会使用一些图片软件来看图,当我们把图片移进看图软件时,会立马显示出当前图片和当前图片路径下的所有图片,我们还可以点击任意一张图片,右键来查看当前图片的属性,实现这两个功能的类主要用到了QDir路径类和QFileInfo文件属性类.#include "c.h"c::c(QWidget *parent) : QWidget(parent){ ui.setupUi(原创 2017-12-12 20:36:33 · 1618 阅读 · 0 评论 -
Qt学习: 坐标系统详解
想来初学Qt的小伙伴,一定对于Qt中的坐标系问题感到疑惑,下面将详细解释下Qt中的坐标系以及转化. 1.世界坐标和模型坐标. 那么,什么是世界坐标呢?其实很简单,我们可以把电脑屏幕当成一个世界,世界坐标就是,电脑上的一个位置(这里可以看成一个点)相对于左上角的位置.因为是ui界面,所以是一个以左上角为原点,横轴为x轴,纵轴为y轴的坐标系.为什么取名世界坐标呢?因为这是一个从第三者的角度去理解的,原创 2017-12-07 22:25:51 · 3453 阅读 · 0 评论 -
Qt学习: 如何显示中文,QString和string以及C风格字符串的转换
由于Qt是使用C++作为语言来开发的,而大多数人对于C++中的STL用的比较多,这也造成了Qt中字符串类型转换问题的一个原因,当然Qt中也封装了一个QString类来方便字符串的使用,所以Qt中大部分类方法的参数都是QString类型的,所以在QString,string,char*三者之间的转换出了些问题.1.QString和string之前的转换.QString temp = "nihao";原创 2017-12-03 22:01:43 · 3499 阅读 · 0 评论 -
Qt学习: 鼠标追踪及自定义工具栏.(以美图看看为例)
在主窗口中,除了自带的一个主工具栏,还可以在其他位置放置自定义的QToolBar.但是你会发现,ui页面的mainToolBar的初始位置只能是上下左右四个位置,这里说的是初始位置,因为只要设置了floatable和movetable这两个属性,就可以拖动到指定位置,但如果要实现初始就要在某一特定位置的话,只能够重新定义一个工具栏.//"c.cpp"内的代码:#include "c.h"c::c(原创 2017-12-01 21:10:24 · 1090 阅读 · 1 评论 -
Qt实现任务栏中的托盘图标的功能.
看我们电脑最下面一行的任务栏,会发现有一些软件被关闭后,还会继续存在任务栏中,当点击任务栏中的图标时,又会跳出来这个软件的画面,主要用到了Qt中的QSystemTrayIcon这个类,下面我们来简单的展示下实现的方法://"c.cpp"的代码:#include "c.h"c::c(QWidget *parent) : QMainWindow(parent){ ui.setupU原创 2017-11-29 19:03:35 · 1887 阅读 · 0 评论 -
Qt实现右键菜单的五种方法!(以QListWidget为例)
学习了Qt很久,下面总结了5种实现右键菜单的方法(以QListWidget为例): 下面5种方法选其一即可.当然越简单越好啦! 1.重写QListWidget的virtual void mousePressEvent(QMouseEvent *event);鼠标点击函数. 2.重写QListWidget的virtual void contextMenuEvent(QContextMenuEv...原创 2017-11-27 21:12:10 · 29921 阅读 · 7 评论 -
Qt实现窗口整体拖拽功能.
我们都知道,当我们鼠标点击并移动应用程序的上边框时,窗口才会整体移动,但有些窗口,你点击移动其他部分,也可以让窗口跟着鼠标移动,这里就教你如何整体移动窗口.其实实现这样的功能很简单,只需要重写以下的3个鼠标函数即可.//"c.h"#ifndef C_H#define C_H#include <QtWidgets/QWidget>#include "ui_c.h"...原创 2017-11-26 23:04:00 · 12041 阅读 · 13 评论 -
子类化QListWidget实现自定义拖拽功能.
我们经常会碰到这样的一个问题,我们想把其他地方选中的文本,直接通过拖拽移动到一个控件中,从而实现方便添加项的功能. 这里我们以QListWidget作为例子,来实现这么一个功能:其他地方的文本可直接拖拽进QListWidget中,且QListWidget部件中的文本可相互拖拽,也就是可以从QListWidget中拖拽项到另外一个QListWidget中,实现拖拽项的功能.首先我们对QListWid原创 2017-11-25 11:52:23 · 11015 阅读 · 4 评论 -
Qt学习: 给程序添加快捷键事件的几种方法介绍
不管在玩游戏,还是使用软件时,我们都可以看到,几乎都带了快捷键来操作这个软件,或者游戏,那么如何在程序中去实现这个功能呢?我将在下面介绍三种常用的方法.第一种方法:第一种方法就是重写键盘事件的虚函数.virtual void keyPressEvent(QKeyEvent *event);//重写键盘事件.//别忘了头文件<QKeyEvent>void c::keyPressEvent(QKe原创 2017-11-01 19:49:13 · 7086 阅读 · 0 评论 -
Qt学习: 鼠标事件总结(转)
1、QMouseEvent中的坐标 QMouseEvent中保存了两个坐标,一个是全局坐标,当然另外一个是局部坐标。 全局坐标(globalPos())即是桌面屏幕坐标(screen coordinates),这个跟windows下的调用getCursorPos函数得到的结果一致。 局部坐标(pos())即是相对当前active widget的坐标,左上角坐标为(0, 0)。补充一个公式:转载 2017-10-24 19:30:15 · 845 阅读 · 0 评论 -
Qt学习: QPaintEvent和QMouseEvent的简单程序示例
QMouseEvent下可以被重写的虚函数: 1.void mousePressEvent(QMouseEvent *event); //鼠标键被按下的事件. 2.void mouseReleaseEvent(QMouseEvent *event); //鼠标键被放开的事件. 3.void mouseMoveEvent(QMouseEvent *event); //按住鼠标键移动的事件.原创 2017-10-21 19:10:26 · 6936 阅读 · 0 评论 -
Qt学习: 如何在Qt中使用全局变量!出现无法解析的命令的问题看过来!!
很多小伙伴在Qt编程时,不会使用全局变量,其实基本有两种方式来定义使用全局变量,第一种是根据c/c++的extern来进行多文件的使用,第二种方法就是把全局变量放在类中,当做类静态变量来使用,一般来说,第一种方式严重破坏了类的封装,所以还是推荐第二种方式.下面给出简单的示例:1.先在一个.h文件中声明一个类://c.h#ifndef C_H#define C_Hclass QPos{pu原创 2017-10-19 18:30:02 · 3463 阅读 · 0 评论 -
Qt Designer中自定义控件的使用(提升法与插件法)
准备乱写一点Qt自定义Widget在Designer中的使用。可是又不想重复提升法(promotion)及插件法基本用法,因为Manual中Using Custom Widgets with Qt Designer已经说的很清楚了。 使用designerQt用户可能会经历这样的3个阶段: 刚接触Qt,在designer中拖拖拽拽,一个界面就形成了。相当方便(不过不少人网友初次接触时对layout转载 2017-10-17 19:47:14 · 3301 阅读 · 0 评论 -
Qt学习: QStackedWidget和手工代码布局的程序实例
重要函数: 1.void setCurrentIndex(int); //用下标显示当前页,.从0开始. 2.int count(); //返回页面的数量. 3.void insertWidget(int, QWidget*); //在下标为参数位置插入页. 4.void addWidget(QWidget*);原创 2017-10-17 08:45:19 · 1517 阅读 · 0 评论 -
Qt学习: QTabWidget多页面部件的用法及程序示例
*重要函数:* 1.void setTabText(int, QString); //设置页面的名字. 2.void setTabToolTip(QString); //设置页面的提示信息. 3.void setTabEnabled(bool); //设置页面是否被激活. 4.void setTabPosition(QTabPosition::South); //设置页面名字原创 2017-10-15 14:58:05 · 7081 阅读 · 1 评论 -
Qt学习: QCloseEvent关闭事件的使用及代码示例
QCloseEvent事件是指,当你鼠标点击窗口右上角的关闭按钮时,所触发的函数.如果你没有重写virtual closeEvent(QCloseEvent*event);这个虚函数的话,系统是默认接受关闭事件的,所以就会关闭窗体,但有的时候,比如在记事本程序中,但你的文本未保存时,点击关闭按钮,就会跳出是否保存的提示框,这是因为它重写了关闭事件这个虚函数.首先用Qt设计师拖拽一个QTextEdit原创 2017-10-14 09:22:27 · 26869 阅读 · 1 评论