qt 自定义控件窗口提升】的更多相关文章

QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)   改进法   1.改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件.把这两个文件拷贝到想要的项目中.   HexspinBox.h #ifndef HEXSPINBOX_H #define HEXSPINBOX_H #include <QSpinBox> class QRegExpValidator; class HexSpinBox :…
0.前言 前面一篇文章写道了仪表盘的特点,实现了一个贴图的仪表盘,属于低配版本的仪表盘.    主要是有任何改动时候就需要重新设计图片,不能适配不同控件大小,即使让它自由拉伸,但仪表盘放大缩小时候显示效果会变差.这篇文章设计了一个自己绘制的仪表盘,有背景表盘,刻度线.刻度值,指针,以及动态运行效果. 1.demo顶层设计 设计2个控件,1个widget提升为Mydial仪表盘控件,一个滑动条控件,来测试仪表盘指针旋转效果用. 代码调用,绑定滑动条信号到仪表盘的槽函数即可. #include "w…
截屏(screenshot),就是将屏幕上的东西拷贝下来存成图片文件.介绍的好像有点多余:(,那我们就直接切入正题. QPixmap提供了两个函数grabWidget和grabWindow可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将QPixmap存成文件.函数使用很简单,两行代码就可以.QPixmap pixmap = QPixmap::grabWidget(this);//this是调用该函数的QWidget *指针pixmap.save(“widget.png”,”png”…
QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowseclipse跨平台server 版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 QT源码解析(二)深入剖析QT元对象系统和信号槽机制 QT源…
C++框架_之Qt的窗口部件系统的详解-上 第一部分概述 第一次建立helloworld程序时,曾看到Qt Creator提供的默认基类只有QMainWindow.QWidget和QDialog三种.是的,这三种窗体也是以后用的最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,而它们二者全部继承自QWidget.不仅如此,其实所有的窗口部件都继承自QWidget. 第二部分--核心部分 2.1Qt窗口坐标体系 坐标体系 以左上角为原点,X向右增加,Y…
w.move((a.desktop()->width() - w.width())/, (a.desktop()->height() - w.height())/); 上述方法可以置中,但是是在排除任务栏之外的区域置中. 其他方式: Qt程序设置界面显示在屏幕中央(包括多屏机的处理) [Qt]窗口居中显示…
1.window.showFullScreen()//此方法只对顶级窗口有效,对子窗口无效 QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用.子窗口的特征是 Qt::SubWindow,不是独立的窗口.因此对其调用showFullScreen()无效.通过对对子窗口调 用:setWindowFlags(Qt::Dialog):或setWindowFlags(Qt::Window):将其设为窗口模式后,即可调用 showF…
QT 主窗口和子窗口相互切换示例 文件列表: SubWidget.h #ifndef SUBWIDGET_H #define SUBWIDGET_H #include <QtWidgets/QWidget> #include <QtWidgets/QPushButton> class SubWidget : public QWidget { Q_OBJECT public: ); ~SubWidget(); void sendSlot(); signals: /** * 信号必须要…
我的需求:想全屏一个子窗口QMidSubwindow,禁止显示最大化最小化和关闭按钮. 我开始尝试的是网上介绍的方法,把结果展现给大家一下,最后再总结: 方法1:QMidSubwindow直接调用showMaximized(),我的疑问在图片上,为啥我的禁止子窗口显示最大化.最小化.关闭按钮,没有成功呢??? 源码: ExaminationForm *patientExamForm = new ExaminationForm(); patientExamForm->setWindowTitle(…
1.设计思想 雷达扫描图,在影视作品中见到较多,比如飞机雷达.舰艇雷达,有一个扫描线转圈代表雷达一周旋转或一个批次的收发,发现目标就在表盘上标记位置.和汽车仪表盘类似,汽车仪表盘有底盘背景图.同圆.刻度.刻度值.旋转的指针.能在汽车仪表盘的基础上略作修改,比如指针换成带有余辉的扫描扇面,就能完成一个雷达扫描图. 代码实现原理:上图的扫描线和余辉效果,可以使用QConicalGradient 函数来实现,qconicalgradient()提供的是一种扇形渐变效果,圆锥式渐变或称角度渐变.用这个渐…
Qt 子窗口监听主窗口信号(转载)  原文链接:https://www.cnblogs.com/ybqjymy/p/12169762.html 1 MainWindow *ptr = NULL; 2 3 ptr = (MainWindow*)parentWidget(); 4 5 connect(ptr, SIGNAL(param_result(bool)), this, SLOT(param_add(bool)));…
常用的窗体基类是 QWidget.QDialog 和 QMainWindow,在创建 GUI 应用程序时选择窗体基类就是从这 3 个类中选择. QWidget 直接继承于 QObject,是 QDialog 和 QMainWindow 的父类,其他继承于 QWidget 的窗体类还有 QSplashScreen.QMdiSubWindow 和 QDesktopWidget.另外还有一个类 QWindow,它同时从 QObject 和 QSurface 继承.这些类的继承关系如图 1 所示. 图…
之前使用Qt的时候都是手写代码的(因为批量按钮可以使用数组实现),但当界面越来越复杂时,这种开发效率就太低了; 后来就开始使用QtDesigner,但要使QtDesigner支持我自己写的控件,需要提升或插件的形式(在<C++ GUI Qt 4编程(第二版)>中有介绍). 结果看了之后,觉得提升的方式简单而不灵活,故使用插件法实现;步骤如下: [具体可参照第三方开源组件Qwt部件库的插件类的实现方式,个人感觉特别规范]   1. 继承QObject和QDesignerCustomWidgetI…
Qt创建自定义控件教程 一.新建Qt设计师控件 二.设置项目名称 三.选择kits 这里取消Debug选项,不需要这个选项都是编译为dll文件直接调用. 删除掉MyControl原有的.h和cpp文件 重新创建ui/h文件 取相同的名称 Build一下,成功表示配置没有问题 不能编译要查一下配置是否正确主要是两个地方 1:你需要安装vs C++编译环境 2:需要安装CDB CBD安装后某些系统不能自动生成选项,这个时候需要我们自己配置,到这个路径去寻找就行了(x86和x64要注意区分) 编译完成…
做过安防视频监控的同学都清楚,在视频监控系统软件上都可以看到一个云台控制区域,可以对球机进行下下左右等八个方位的运动控制,还可以进行复位,一般都是美工作图好,然后贴图的形式加入到软件中,好处是程序简单,界面美工,主要取决于美工的美图能力,缺点是对于各种分辨率的适应性稍微差点,需要不同的图片切图贴图,除非默认做好的是大图自适应看不出差别,可能大部分人所在的公司都是小公司,一般美工人员比较少甚至没有,都需要程序员一人负责,甚至一开始就要考虑到各种分辨率的应用场景以及后期可能的换肤换色等.之前做过很多…
动手实现自定义控件: 1.首先在ui界面中添加一个(Widget)容器类.如图中的1所示 2.在项目中添加一个SmallWidget类,如下: 3.接着在程序编辑界面进行程序编辑如下: #include "smallwidget.h" /*自定义控件*/ #include <QSpinBox> #include <QSlider> #include <QHBoxLayout> SmallWidget::SmallWidget(QWidget *par…
qt 中允许自定义窗口控件,使之满足特殊要求, (1)可以修改其显示,自行绘制 (2)可以动态显示 (3)可以添加事件,支持鼠标和键盘操作 自定义控件可以直接在QtDesigner里使用,可以直接加到父窗口里. 绘制窗口 1.新建一个类,继承与QWidget或QFrame,最好是继承于QFrame 2.重写以下函数 void CellMonitor::paintEvent(QPaintEvent *event) { QPainter painter(this) } 3.使用这个类 例子:画一个圆…
在家休息,试着用QT去模仿各类管家软件的界面,做到自绘阴影的时候,蛋疼了. 网上搜到的基本都是一篇文章转来转去,一开始也被思路限制了. 尝试重载paintEvent,然后自己绘制矩形阴影,但是绘制的算法始终觉得有问题,最后发现 QGraphicsDropShadowEffect 这个一个好东西,虽说网上有提到,但是基本都是用它来绘制子控件阴影,所以我好奇,为什么不直接放个QFrame在窗口中间,四边留出阴影位置,主窗口背景设置为透明,Qfram设置阴影效果不就OK了? 说干就干,代码摘要如下:…
在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的需求,但是有时候,也会产生一些特殊的需要,比如一个输入框,我们要输入的是经纬度,此时就会有两种输入方式,一种是小数形式,一种是度分秒的形式,此时只使用一个简单的LineEdit是无法满足需求的.我们设想构造这样一个输入控件,它可以支持浮点数输入,同时它还具有一个属性,更改这个属性可以使其切换为经纬度…
有个兄弟发了一个站内的私信给我,内容如下: 时间:2014-03-05 09:08:19 大哥,debian 的BBB版本没有图形界面吧 我安装后只有文本界面 我突然意识到,我前面有没有说清楚的地方,的确,这个版本的debian(安装在beaglebone black端)没有图形界面,但我认为没有大的问题,因此,我的回复如下: 你好,不好意思,我忘了说,这个版本的debian没有图形界面,只有控制台界面. 我认为足够了,因为 1.如果想装图形界面直接安装LXDE或XFCE即可,aptitude…
有时需要把一个子窗口内嵌进入父窗口当中. 我们可以这样做 1.新建一个QWidget 或者QDialog的子类 ClassA(父类为ClassB) 2.在新建类的构造函数中添加设置窗口属性 setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint); 关闭默认的窗口标题提示以及没有边框的窗口. 3.在父窗口中调用. ClassA *A; A = new ClassA(this); A->show(); 在要显示的地方show就行…
一.主要理解一下几个方法和属性: 1.QWidget * QScrollView::viewport () const 2.void QWidget::paintEvent ( QPaintEvent * ) [虚 保护] 3.void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 4.void QWidget::update () [槽] 5.void QWidget::erase ( int x,…
一.添加窗口背景图片 重写MainWindow绘制事件 void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.drawPixmap(0,0,width(),height(),QPixmap("background.png")); qDebug()<<event; }记得在头文件中声明函数. 二.图片显示 QPixmap car("Car.png"…
在这里自定义窗口是通过继承于QFrame,内部分为上下两部分,上半部分就是标题栏,下面是窗口的具体内容.上下两部分通过布局固定位置.最后窗口的各种鼠标拖动,缩放,等操作通过添加鼠标事件来完成一个窗口的常规功能.当然,这个标题栏可以通过布局的改变把它放到任意地方. 下面是实现的代码: #pragma once #ifndef CUSTOMWIDGET_H_ #define CUSTOMWIDGET_H_ #include <QtWidgets/QFrame> class QToolButton;…
有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能. PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔... 思路: 1:制作一个由一个小图标组成的,可点击,可拖动,背景透明的Widget 2:重载主窗口(在此例子中是QLabel)的changeEvent(详情见代码) 截图:(浅绿色的部分是桌面背景) 主窗体: 小浮标: 代码: #include <QtGui> #include <Windows.…
基本思想:假设A为主窗口,B为子窗口.A打开或关闭时,先对A窗口进行截图,然后将图片部满整个B窗口的,在paintEvent里面进行动态缩放或放大画图.最后使用动画,将B窗口以动画的形式打开或关闭,动画播放完毕后,B发送一个信号给A,B关闭,A显示出来. 核心代码发下: 在A窗口里: QPixmap pixmap; CTestDialog dlg(this);    dlg.SetPixmap(pixmap.grabWidget(this));    hide();    dlg.exec();…
1.选择 "其他项目"->"Qt4 设计师自定义控件" **最好选中所有的编译器平台,由于目前使用的Qt Creator是MSVC2015 32位,因此要想Qt creator在中使用必须选中MSVC2015 32 位. 2.根据向导添加控件的类名,点击完成. 1)       一般向导生成的文件都在同一个文件夹下,为了便于后期的维护使用,分离插件和库文件,将插件的文件放在同名的文件夹中. 1)       这时需要改动两个文件中的信息,一个是Demo.pro…
{ QScrollArea *scrollArea = new QScrollArea(this); scrollArea->setFrameStyle(); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setWidgetResizable( QWidget* container = new QWidget(scrollArea); scrollArea->setWidget(…
本系列主要使用Qt painter来实现一些基础控件.主要是对平时自行编写的一些自定义控件的总结. 为了简洁.低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件. 由于个人水平有限,学习Qt时间不长,所以代码中出现BUG,不够优雅以及有待改进部分,还请见谅和提出意见. 本项目所有代码在Qt5.10以上均测试通过,理论上Qt 5版本应该都支持. 本系列所有程序,已经放在了github的项目上,项目地址:https://github.com/LOMOoO/Custom…