Qt之自定义菜单(右键菜单)
2017-09-20 10:12
411 查看
在接触Qt这段时间以来,经常遇到菜单项的问题(右键菜单、托盘菜单、按钮菜单等),QMenu用于菜单栏,上下文菜单,弹出菜单等,利用QMenu+QAction就可以达到效果!
右键菜单实现:通过重写contextMenuEvent(QContextMenuEvent *event)事件,QMenu+QAction即可完美实现!
对象:QTreeWidget
实现方式:createActions用于创建菜单、菜单项,contextMenuEvent用于实现菜单的显示,translateLanguage用于实现菜单的文本(此方法主要设置多语化使用)
void ImageTree::createActions()
{
//创建菜单、菜单项
pop_menu = new QMenu();
add_images_action = new QAction(this);
add_folder_action = new QAction(this);
remove_selected_action = new QAction(this);
remove_all_action = new QAction(this);
//连接信号与槽
connect(add_images_action, &QAction::triggered, this, &ImageTree::selectImages);
connect(add_folder_action, &QAction::triggered, this, &ImageTree::selectFolder);
connect(remove_selected_action, &QAction::triggered, this, &ImageTree::removeSelectedImages);
connect(remove_all_action, &QAction::triggered, this, &ImageTree::removeAllImages);
}
void ImageTree::contextMenuEvent(QContextMenuEvent *event)
{
//清除原有菜单
pop_menu->clear();
pop_menu->addAction(add_images_action);
pop_menu->addAction(add_folder_action);
pop_menu->addAction(remove_selected_action);
pop_menu->addAction(remove_all_action);
//菜单出现的位置为当前鼠标的位置
pop_menu->exec(QCursor::pos());
event->accept();
}
void ImageTree::translateLanguage()
{
add_images_action->setText(tr("add images"));
add_folder_action->setText(tr("add folder"));
remove_selected_action->setText(tr("remove selected images"));
remove_all_action->setText(tr("remove all images"));
}
效果如下:
二级菜单的实现(包括三级菜单或者更多)也类似,只需要使用QMenu的addMenu()方法即可!关于右键二级菜单的东西之前介绍过,详情请参阅:QTableWidget详解(样式、右键菜单、表头塌陷、多选等)。
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:╰☆奋斗ing❤孩子` 原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101f0xn.html。
右键菜单实现:通过重写contextMenuEvent(QContextMenuEvent *event)事件,QMenu+QAction即可完美实现!
对象:QTreeWidget
实现方式:createActions用于创建菜单、菜单项,contextMenuEvent用于实现菜单的显示,translateLanguage用于实现菜单的文本(此方法主要设置多语化使用)
void ImageTree::createActions()
{
//创建菜单、菜单项
pop_menu = new QMenu();
add_images_action = new QAction(this);
add_folder_action = new QAction(this);
remove_selected_action = new QAction(this);
remove_all_action = new QAction(this);
//连接信号与槽
connect(add_images_action, &QAction::triggered, this, &ImageTree::selectImages);
connect(add_folder_action, &QAction::triggered, this, &ImageTree::selectFolder);
connect(remove_selected_action, &QAction::triggered, this, &ImageTree::removeSelectedImages);
connect(remove_all_action, &QAction::triggered, this, &ImageTree::removeAllImages);
}
void ImageTree::contextMenuEvent(QContextMenuEvent *event)
{
//清除原有菜单
pop_menu->clear();
pop_menu->addAction(add_images_action);
pop_menu->addAction(add_folder_action);
pop_menu->addAction(remove_selected_action);
pop_menu->addAction(remove_all_action);
//菜单出现的位置为当前鼠标的位置
pop_menu->exec(QCursor::pos());
event->accept();
}
void ImageTree::translateLanguage()
{
add_images_action->setText(tr("add images"));
add_folder_action->setText(tr("add folder"));
remove_selected_action->setText(tr("remove selected images"));
remove_all_action->setText(tr("remove all images"));
}
效果如下:
二级菜单的实现(包括三级菜单或者更多)也类似,只需要使用QMenu的addMenu()方法即可!关于右键二级菜单的东西之前介绍过,详情请参阅:QTableWidget详解(样式、右键菜单、表头塌陷、多选等)。
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:╰☆奋斗ing❤孩子` 原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101f0xn.html。
相关文章推荐
- Qt之自定义菜单(右键菜单)
- 自定义ie右键菜单
- 【AS3代码】在上下文菜单(右键菜单)中添加自定义项
- jQuery自定义右键菜单
- Qt之密码框不可选中、复制、粘贴、无右键菜单等
- QT笔记(3)——Qt的lineEdit和textEdit的右键菜单汉化
- Qt 学习(6)在QT中添加右键菜单
- 如何让natTable表格支持自定义多个右键菜单
- Qt4另类使用教程(二)---Qt4 右键菜单 透明Widget 实例
- 为QT程序编写右键菜单
- google map 自定义右键菜单
- Qt界面添加右键菜单
- Qt自定义菜单项
- silverlight2自定义鼠标右键菜单,屏蔽原来右键菜单显示的内容,打造自己喜欢的菜单。
- javascript自定义右键菜单,js自定义右键删除——和派孔明
- QT右键菜单
- 屏蔽FLEX右键菜单以及实现自定义的FLEX右键功能
- Qt 前端显示(置顶)、 居中和右键菜单的实现
- 自定义右键菜单中bug记录