雄县阿里巴巴网站建设,白云区网络推广,做网站公司郑州,浙江建设培训考试网站在接触Qt这段时间以来#xff0c;经常遇到菜单项的问题#xff08;右键菜单、托盘菜单、按钮菜单等#xff09;#xff0c;QMenu用于菜单栏,上下文菜单,弹出菜单等#xff0c;利用QMenuQAction就可以达到效果#xff01;
右键菜单实现#xff1a;通过重写contextMenuEv…在接触Qt这段时间以来经常遇到菜单项的问题右键菜单、托盘菜单、按钮菜单等QMenu用于菜单栏,上下文菜单,弹出菜单等利用QMenuQAction就可以达到效果
右键菜单实现通过重写contextMenuEvent(QContextMenuEvent *event)事件QMenuQAction即可完美实现
对象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()方法即可