QTableWidget添加表头菜单并可以通过表头菜单隐藏选中列
一、首先需要给QTableWidget安装事件
二、重新实现事件过滤器(QObject *obj,QEvent *ev)函数
三、下面是实现代码。h
#ifndef TABLEHEADERMENU_H
#定义TABLEHEADERMENU_H
#包含QtWidgets/QMainWindow
#包含' ui_tableheadermenu.h '
#包含QStringList
#包含QMenu
#包含量化事件
TableHeaderMenu :类公共QMainWindow
{
Q_OBJECT
公众号:
TableHeaderMenu(QWidget * parent=0);
~ TableHeaderMenu();
//设置表头菜单
void setHeaderMenu();
公共槽3360
//表头菜单响应槽函数
void slot visibleitems changed(bool已选中);
受保护:
//重写事件
bool eventFilter(QObject *obj,QEvent * ev);
私人:
ui : tableheadermenuclass ui;
//水平表头
QStringList horHeaderStr
//表头菜单
QMenu * m _ headerMenu
};
# endif///TABLEHEADERMENU _ H
卡片打印处理机(卡片打印处理器的缩写)
#包括" tableheadermenu.h "
#包含QContextMenuEvent
tableheadermenu :3360 tableheadermenu(QWidget *父级)
: QMainWindow(父)
{
ui。setupui(这个);
//设置列数
ui。TableWidget-SetColumnCount(5);
//表头
来自本地8位('的horheaderstrqstring :姓名)
QString:fromLocal8Bit('年龄)
QString:fromLocal8Bit('性别)
QString:fromLocal8Bit('兴趣)
QString:fromLocal8Bit('特长');
//设置表头
ui。table widget-sethorizontalheaderllables(Horheaderstr);
//安装水平表头事件
ui。table widget-horizontalHeader()-installEventFilter(this);
setHeaderMenu();
}
TableHeaderMenu : ~ TableHeaderMenu()
{
}
/*
实现表头菜单
*/
void tableheadermenu :3360 theadermunu()
{
m _ headerMenu=new QMenu(this);
qaaction * action name=新的qaaction(来自本地8位的qstring :('姓名),这个);
qaaction * action age=新的qaaction(来自本地8位的qstring :('年龄),这个);
QAction * actionSex=新的来自本地8位('的qaaction(qstring :性别),这个);
qaaction * action interset=新的qaaction(来自本地8位的qstring :('兴趣),这个);
QAction * actionSpeciality=新的来自本地8位('的qaaction(qstring :特长),这个);
操作名-设置对象名(qstring :3360 number(0));//0隐藏第一列
操作名称-SetCheckable(true);
actionName-setChecked(真);
actionAge-设置对象名称(qstring : number(1));//1隐藏第二列
actionAge-setCheckable(true);
actionAge-setChecked(真);
actionSex-设置对象名称(qstring :3360 number(2));//2隐藏第三列
actionSex-setCheckable(真);
actionSex-setChecked(真);
actionintermate-set对象名(qstring : number(3));//3隐藏第四列
action intermate-setCheckable(true);
actionintermate-set checked(真);
action specialty-设置对象名称(qstring :3360 number(4));//4隐藏第五列
action speciality-setCheckable(true);
actionspecialty-set已选中(真);
//连接菜单响应槽函数
connect(actionName,QAction:toggled,this,tableheadermenu :3360 lotusvisibleitems已更改);
connect(actionAge,QAction:toggled,this,tableheadermenu :3360 lotusvisibleitems已更改);
connect(actionSex,QAction:toggled,this,tableheadermenu :3360 lotsvisibleitems已更改);
connect(actioninter it,QAction:toggled,this,tableheadermenu :3360 lotusvisibleitems已更改);
connect(actionspecialty,QAction:toggled,this,tableheadermenu :3360 lotusvisibleitems已更改);
//添加菜单
m _ headerMenu-addAction(动作名称);
m _ headerMenu-addAction(actionAge);
m _ headerMenu-addAction(actionSex);
m _ headerMenu-addAction(action inter it);
m _ headerMenu-addAction(action specialty);
}
/*
表头菜单响应函数
*/
请参阅表格标题菜单3: slot visibility(bool选中)
{
qobject * obj=dynamic _ castqobject *(sender());
int n=obj物件名称()。屋顶();
ui。表小部件-设置列idden(n,已检查:
}
/*
范仲淹先生
*/
bool表格标题菜单3:事件过滤器(qoobject * obj,QEvent *ev)
{
if(obj==ui。表格小部件-水平标题()))
if(ev-type()==qevent 3:上下文菜单)>
qcontextmenuevent *菜单事件=static _ cast上下文菜单事件*(ev);
m_headerMenu跃现式选单(菜单事件-global pos());
返回真实的
}
其他
返回错误的
}
}
其他
返回事件过滤器(obj,ev);
}
}
手!手
#包括tableheadermenu.h
#包括qtwidgets/QA应用程序
int main(int argc、char *argv[])
{
qaapplication a(argc、argv);
表格标题菜单w;
w。show();
返回a . exec();
}
阿勃良
李佑(音译)页:1
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52106.html