QSplitter实现滑动窗口和悬浮按钮
1 QSplitter实现滑动窗口和悬浮按钮
软件应用中需要设计右侧滑动窗口,通过一个按钮来实现窗口的隐藏和显示,应用场景比如显示主界面的详细信息。
(1) 在qt design中添加QSplitter,添加主窗口界面和右侧滑动窗口界面。
(2) 在程序中添加浮动按钮,并在初始化中设置按钮的属性
m_btnFold.setParent(this);
m_btnFold.setFocusPolicy(Qt::NoFocus);
m_btnFold.setFixedSize(16, 78);//设置大小
m_btnFold.setIconSize(m_btnFold.size());
m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);//设置移动位置
m_btnFold.setStyleSheet("border:0px;border-style:outset;");//设置无边框
m_btnFold.setFlat(true);//设置扁平按钮
m_btnFold.setVisible(true);//设置可见
m_btnFold.setStyleSheet("background:url(:/qss/image/unfoldbtn.png);border: 0px;");//设置背景图片,图片需先加入工程资源中
m_btnFold.show();
m_btnFold.setToolTip("展开详情");
(3) 添加按钮的响应函数
connect(&m_btnFold, SIGNAL(clicked()), this, SLOT(DisplayFoldWidget()));
void SpliterWidget::DisplayFoldWidget()
{
if (m_bfoldOpen == false)
{
m_btnFold.setToolTip("收起详情");
m_bfoldOpen = true;
ui.alarmDetailWidget->setVisible(true);//展示右侧滑动窗口
m_btnFold.move(this->width()-ui.alarmDetailWidget->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);
m_btnFold.setStyleSheet("background:url(:/qss/image/foldbtn.png);border: 0px;");//重新移动按钮位置
}
else if (m_bfoldOpen == true)
{
m_btnFold.setToolTip("展开详情");
m_bfoldOpen = false;
ui.alarmDetailWidget->setVisible(false);//右侧滑动窗口
m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);
m_btnFold.setStyleSheet("background:url(:/qss/image/unfoldbtn.png);border: 0px;");//改变按钮图标方向
}
}
(4) 窗口放大缩小的时候还要重新确定按钮的位置,所以要重写大小改变函数。
void resizeEvent(QResizeEvent* size);
void SpliterWidget::resizeEvent(QResizeEvent* size)
{
int winwidth= ui.alarmCenter->window()->width();
QList<int> spliteList;
spliteList.append(winwidth - 320);
spliteList.append(320);//右侧固定大小为320
ui.splitterLR->setSizes(spliteList);
m_btnFold.setVisible(true);
m_btnFold.show();
if (m_bfoldOpen==true)//移动按钮位置
{
m_btnFold.move(this->width()-ui.alarmDetailWidget->width()-m_btnFold.width() , (this->height() - m_btnFold.height()) / 2);
}
else
{
m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);
}
}
自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;
(1) 个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;
(2) 大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。
(3) 股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;
下载地址:
1.0.3版本(修复大盘指数崩溃缺陷)下载地址:
链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h
更新链接:
https://www.cnblogs.com/bclshuai/p/10621613.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2017-10-18 crontab 定时任务守护程序,停止服务器时出现 job for * canceled