qt 收缩窗体

效果图:



功能拆分图:



代码:

QtStubOption.cpp

QtSubOption::QtSubOption(QWidget *parent): QLabel(parent)
{ui.setupUi(this);m_GuiShow = SHOWGUI;setMouseTracking(true);m_PicStatus[SHOWGUI] = ":/QtGuiApplication3/tile";m_PicStatus[HIDEGUI] = ":/QtGuiApplication3/tile2";m_PicStatus[HIDEGUIMOVE] = ":/QtGuiApplication3/tile2_move";m_PicStatus[HIDEGUIPRESS] = ":/QtGuiApplication3/tile2_pressed";QPixmap pixmapTitle(m_PicStatus[SHOWGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);setWindowFlags(Qt::FramelessWindowHint);setAttribute(Qt::WA_TranslucentBackground);setAlignment(Qt::AlignTop);setFixedSize(208, 24);m_ParentApp = (QtGuiApplication3 *)parent;
}QtSubOption::~QtSubOption()
{
}void QtSubOption::mouseReleaseEvent(QMouseEvent * ev)
{//点击标题栏的消息if (m_GuiShow == SHOWGUI){m_ParentApp->buttomWidget->hide();m_GuiShow = HIDEGUI;QPixmap pixmapTitle(m_PicStatus[HIDEGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}else{m_ParentApp->buttomWidget->show();m_GuiShow = SHOWGUI;QPixmap pixmapTitle(m_PicStatus[SHOWGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}void QtSubOption::mouseMoveEvent(QMouseEvent * ev)
{
}void QtSubOption::mousePressEvent(QMouseEvent * ev)
{if (m_GuiShow == HIDEGUI){QPixmap pixmapTitle(m_PicStatus[HIDEGUIPRESS].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}void QtSubOption::enterEvent(QEvent *)
{if (m_GuiShow == HIDEGUI){//OutputDebugStringA("1111");QPixmap pixmapTitle(m_PicStatus[HIDEGUIMOVE].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}void QtSubOption::leaveEvent(QEvent *)
{if (m_GuiShow == HIDEGUI){//OutputDebugStringA("2222");QPixmap pixmapTitle(m_PicStatus[HIDEGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}

QtGuiApplication3.cpp

QtGuiApplication3::QtGuiApplication3(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QtSubOption *tileLabel = new QtSubOption(this);QtSubOption *tileLabel2 = new QtSubOption(this);buttomWidget = new QWidget(this);buttomWidget->setFixedSize(208, 250);QPushButton *modalBtn2 = new QPushButton(this);modalBtn2->setFixedSize(48, 48);modalBtn2->setStyleSheet(QLatin1String("QPushButton{border-image: url(:/QtGuiApplication3/buttom1);}\n""QPushButton:pressed{border-image: url(:/QtGuiApplication3/buttom1_press);}"));QPushButton *modalBtn3 = new QPushButton(this);modalBtn3->setStyleSheet(QLatin1String("QPushButton{border-image: url(:/QtGuiApplication3/buttom2);}\n""QPushButton:pressed{border-image: url(:/QtGuiApplication3/buttom2_press);}"));modalBtn3->setFixedSize(48, 48);QPushButton *modalBtn4 = new QPushButton(this);modalBtn4->setStyleSheet(QLatin1String("QPushButton{border-image: url(:/QtGuiApplication3/buttom3);}\n""QPushButton:pressed{border-image: url(:/QtGuiApplication3/buttom3_press);}"));modalBtn4->setFixedSize(48, 48);QGridLayout *pGridLayoutButtom = new QGridLayout(this);pGridLayoutButtom->setSpacing(20);pGridLayoutButtom->addWidget(modalBtn2, 0 , 0);pGridLayoutButtom->addWidget(modalBtn3, 0,  1);pGridLayoutButtom->addWidget(modalBtn4, 0,  2);pGridLayoutButtom->setAlignment(Qt::AlignTop);//buttonWidget->setWindowFlags(Qt::FramelessWindowHint);//buttonWidget->setAttribute(Qt::WA_TranslucentBackground);buttomWidget->setStyleSheet("background-color: rgb(90, 90, 90)");buttomWidget->setLayout(pGridLayoutButtom);QWidget *pWidget = new QWidget(this);QVBoxLayout *pBoxLayout = new QVBoxLayout(this);pBoxLayout->setSpacing(0);pBoxLayout->addWidget(tileLabel);pBoxLayout->addWidget(buttomWidget);pBoxLayout->addSpacing(10);pBoxLayout->addWidget(tileLabel2);pBoxLayout->addStretch();pWidget->setLayout(pBoxLayout);QScrollArea *scrollArea = new QScrollArea(this);scrollArea->setGeometry(0, 0, 225, 500);scrollArea->setBackgroundRole(QPalette::Dark);scrollArea->setWidget(pWidget);scrollArea->setAlignment(Qt::AlignCenter);scrollArea->setFixedWidth(225);scrollArea->setWidgetResizable(true);QGridLayout *mainLayout = new QGridLayout(this);QGridLayout *leftLayout = new QGridLayout();leftLayout->addWidget(scrollArea);QGridLayout *rightLayout = new QGridLayout();QPushButton *OkBtn = new QPushButton(tr(u8"确定"));rightLayout->addWidget(OkBtn);mainLayout->addLayout(leftLayout, 0, 0);mainLayout->addLayout(rightLayout, 0, 1);QDialog *dlgWidget = new QDialog;dlgWidget->setStyleSheet("background-color: rgb(90, 90, 90)");setCentralWidget(dlgWidget);dlgWidget->setLayout(mainLayout);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android的ELF文件重定位详解,包括64位

0x01 引言 ELF文件格式,主要基于两种,一种是基于链接视图,链接视图即是基于节(Section)来进行解析,一种是基于执行视图,执行视图即是基于段(Segment)来进行解析。前一种是用于静态分析的时候,譬如IDA载入。…

IBinder获取手机服务信息异常

小米8 利用IBinder transact获取服务的接口名字,结果出现以下异常: W/System.err: java.lang.SecurityException W/System.err: at android.os.BinderProxy.transactNative(Native Method) W/System.err: at android.os.BinderProxy.transact(B…

初学C遇到的一些知识点汇总

<span style"font-family: arial, courier new, courier, 宋体, monospace; white-space: pre-wrap;">本人是以C#为入门语言&#xff0c;现在开始学习数字图像处理&#xff0c;正在学习c语言&#xff0c;在这方面还是小白&#xff0c;所以打算把遇到的问题进行…

利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)

一、前言 由于还处于学习阶段&#xff0c;大多数内容都是从网上学习借鉴的&#xff0c;重复的内容就不多赘述&#xff0c;只是将自己的经验和想法分享出来。感觉不错的学习资源如下 http://www.cnblogs.com/tornadomeet/archive/2012/03/28/2420936.html http://www.cnblog…

Haar特征原理与icvCreateIntHaarFeatures方法的具体实现附详细注释—— 人脸识别的尝试系列(二)

带着强烈的兴趣&#xff0c;上周开始人脸识别的尝试与学习&#xff0c;并且将具体的操作过程记录了下来 链接如下&#xff1a;http://blog.csdn.net/u011583927/article/details/44627493 这周开始了对于算法的深入学习&#xff0c;下面进入正题。 Haar特征的原理是什么&…

createsamples.cpp中生成vec文件的实现及详细注释、图解——人脸识别的尝试系列(三)

在我们开始训练我们的Haar分类器之前&#xff0c;首先要对样本进行处理。 人脸识别的尝试系列&#xff08;一&#xff09;中&#xff1a;http://blog.csdn.net/u011583927/article/details/44627493 我们已经提到了如何准备我们的样本&#xff0c;在如下图准备好样本之后 需…

设置同时上内外网+文件共享

最近做了这样一个小项目&#xff0c;逻辑是这样的。 需要在某个办公人员的电脑上装个软件&#xff0c;从局域网中的另一台电脑中读取access数据库&#xff0c;然后用apn接入某个系统的内网传输数据。 同时还要保证这个工作人员能够正常的浏览因特网。 这就涉及到了两个内容。…

浅析haartraining方法进行人脸检测

上个月用了两周的时间&#xff0c;学习了用于人脸检测的haartraining算法&#xff0c;今天打算做一总结 首先先为和我一样的初学者推荐几篇博客 http://blog.csdn.net/zouxy09/article/details/7922923真的很感谢写这篇文章的博主&#xff0c;讲解深入浅出。本文中的主要逻辑…

haartraining训练分类器方法cvCreateTreeCascadeClassifier()详解——人脸识别的尝试系列(四)

本文将介绍opencv_haartraining.exe中训练分类器的核心方法cvCreateTreeCascadeClassifier&#xff08;&#xff09;中参数的具体含义&#xff0c;以及具体实现代码附加详细的注释。最后给出运行截图以作代码阅读的参考 我们还是从具体的例子出发&#xff0c;以一些实际的参数帮…

常用知识总结——模板Template

1. 模板的概念。 我们已经学过重载(Overloading)&#xff0c;对重载函数而言,C的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如&#xff0c;为求两个数的最大值&#xff0c;我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。 /…

opencv视频读写和视频等间隔采样

今天学习了opencv的HighGUI的内容 总结了两个视频读写demo以备以后进行视频处理和识别用 demo1 视频的读取和写入 按顺序读取视频的每一帧。对于读取的每一帧图像&#xff0c;显示在窗口中&#xff0c;然后转化为灰度图像输出到指定的文件中。 运行期间可以按ESC键退出。 还…

Socket通用TCP通信协议设计及实现(防止粘包,可移植,可靠)

Socket通用TCP通信协议设计及实现&#xff08;防止粘包&#xff0c;可移植&#xff0c;可靠&#xff09; 引文 我们接收Socket字节流数据一般都会定义一个数据包协议。我们每次开发一个软件的通信模块时&#xff0c;尽管具体的数据内容是不尽相同的&#xff0c;但是大体上的框…

浅谈 Adaboost 算法

注&#xff1a;本文全文引用自http://blog.csdn.net/carson2005/article/details/41444289 当然作者也是转载的&#xff0c;原文是http://blog.csdn.net/haidao2009/article/details/7514787 写的很好所以转载过来以便之后再次翻阅。 一 Boosting 算法的起源 boost 算法系列的起…

如何理解离散傅里叶变换(一)实数形式傅里叶变换

如何理解离散傅里叶变换&#xff08;一&#xff09; ——实数形式傅里叶变换 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 本文…

快速傅里叶变换(FFT)

快速傅里叶变换&#xff08;FFT&#xff09; ------------------------------------------------------------------------------------------------------------------- 作者&#xff1a;随煜而安 时间&#xff1a;2015/7/21 注&#xff1a;本文为作者原创文章&#xff0c…