Qt中命名空间namespace Ui
QtCreator中创建UI项目代码中,通常下面两个头文件中,都会包含两个同名的命名空间
#include "mainwindow.h"
#include "ui_mainwindow.h"
可以参考下面博文介绍,命名空间的重复定义是可以的,并且会自动合并。Qt中命名空间namespace Ui-CSDN博客文章浏览阅读892次,点赞3次,收藏10次。两个类同名,但不是同一个
https://blog.csdn.net/qq_42774608/article/details/128159721
Qt界面中折叠/收缩/侧边工具栏/收缩导航的实现方法
1)QSplitter控件的方法,QSplitter是布局控件,可以选择水平或者垂直的方式,通过拖动控制handle,实现左右或者上下收缩。详细可查看[QT_043]Qt学习之分裂器(QSplitter)-CSDN博客
QT左侧自定义栏收进_qt侧边栏收缩-CSDN博客 通过控制按钮,点击实现收缩
2)QToolBox控件,原生功能支持控件折叠,但是每次只能展开一个折叠,可能需要进行重写类
参考https://www.cnblogs.com/luoxiang/p/14449127.html
3)QTreeWidget控件,实现多级折叠。QT使用QTreeWidget控件制作多级折叠菜单_qt 折叠面板-CSDN博客
4)通过水平布局控件加控制按钮的方式,实现侧边栏折叠。
Qt实现跟随侧边栏的按钮控制侧边栏的展开与折叠_qt侧边栏收缩-CSDN博客。Qt实现可伸缩的侧边工具栏(鼠标悬浮控制伸缩栏)-CSDN博客 ,这篇博文采用鼠标悬浮的方式,取代按钮控制缩放。
5)QToolButton和QToolBar,类似界面上的工具条和工具条上的按钮,实现工具按钮集成。
https://blog.51cto.com/u_14770531/6348179
Qt:创建SideBar_qt sidebar-CSDN博客
6) QGroupBox 通过重写类的方式实现折叠,QT自定义控件——可折叠QGroupBox_自定义qtoolbox-CSDN博客
QSpiltter的应用案例
QSpiltter是一种布局,可以实现拖动控制器的handle,调整子控件的大小。在应用过程中存在两个问题:
1)虽然设置了子控件的最小尺寸,但是拖动handle到最小尺寸后,在拖动一点后,子控件还是能折叠;
2)拖动handle,只有相邻的两个子控件可以改变大小。
主要用到了splitterMoved的slot槽信号, 返回handle的位置,根据根据自己的逻辑,控制相邻控件的缩放关系。最后校验一下最小尺寸,存在最小尺寸为0时,重新设置最小尺寸。槽函数代码如下。
void mainWidget::on_splitter_splitterMoved(int pos, int index)
{
int pos_min;
int pos_max;
int pos_deta;
QList<int> sizeobj;
//QList<int> newsizeobj;
ui->splitter->getRange(index,&pos_min,&pos_max);
cout << "index:" << index << "pos: " << pos ;
cout << " pos_min,pos_max " << pos_min << " " << pos_max << endl;
sizeobj=ui->splitter->sizes();
//cout << sizeobj[0] << endl;
for (int i=0;i<sizeobj.count();i++)
{
cout << sizeobj[i] << " ";
}
cout << endl;
pos_deta=pos-current_handle_pos;
//cout << pos_deta << endl;
if (index == current_handle_index)
{
if (pos_deta > 0)
{
for (int i=0;i< ui->splitter->count();i++)
{
if (i != current_handle_index)
{
sizeobj[i]=sizeobj[i]-pos_deta;
}
}
} else {
for (int i=0;i< ui->splitter->count();i++)
{
if (i != current_handle_index)
{
sizeobj[i]=sizeobj[i]+pos_deta;
}
}
}
}
current_handle_index=index;
current_handle_pos=pos;
//检查最小尺寸为0时,强制设置最小尺寸
for (int i=0;i< ui->splitter->count();i++) {
if (sizeobj[i]==0) sizeobj[i]=100;
}
ui->splitter->setSizes(sizeobj);
//current_handle_index ==0;
}
&spm=1001.2101.3001.5002&articleId=136628517&d=1&t=3&u=79060024e12f41c48505d6761dff26ad)
3716

被折叠的 条评论
为什么被折叠?



