Qt中如何利用QPushButton来实现一个弹出菜单
来源:互联网 发布:淘宝自动下架 编辑:程序博客网 时间:2024/05/16 15:36
今天,需要做一个弹出菜单的工具栏,于是在网上去找这类的代码,手下找到的是类似于以下的代码:
是通过QPushButton类里面的函数 SetMenu(QMenu* );来实现的
代码如下:
QFrame *m_allTools; QPushButton * m_Tool; QPushButton *m_Layer; QPushButton *m_Color; QVBoxLayout* mainLayout;
// //为工具栏添加子菜单// QFrame *subTools;// QPushButton* ZoomInBtn;// QPushButton* ZoomOutBtn; // QVBoxLayout* subToolsLayout; ZoomInBtn = new QPushButton(tr("ZoomIn"),this); ZoomOutBtn = new QPushButton(tr("ZoomOut") , this); subToolsLayout = new QVBoxLayout; subToolsLayout->addWidget(ZoomInBtn); subToolsLayout->addWidget(ZoomOutBtn); subTools = new QMenu(this); subTools->setGeometry(0,100, 100 ,100); subTools->setLayout(subToolsLayout);// QFrame *m_allTools;// QPushButton * m_Tool; m_Tool = new QPushButton("", this); // subTools = new QMenu(m_Tool); // subTools->setGeometry(0,0, 100 ,100); // subTools->setLayout(subToolsLayout); m_Tool->setIcon(QIcon(":/Images/resetMap.png")); m_Tool->setIconSize(QSize(45 , 45)); m_Tool->setMenu(subTools);// QPushButton *m_Layer; m_Layer = new QPushButton(QIcon(":/Images/resetMap.png"), QStringLiteral("") , this);// QPushButton *m_Color; m_Layer->setIconSize(QSize(40,40)); m_Color = new QPushButton(tr("Color"),this);// QVBoxLayout* mainLayout; m_Color->setIconSize(QSize(45,45)); mainLayout = new QVBoxLayout; mainLayout->addWidget(m_Tool); mainLayout->addWidget(m_Layer); mainLayout->addWidget(m_Color); m_allTools = new QFrame(this); m_allTools->setGeometry(0,0 , 70 ,135);// m_allTools->setStyleSheet("QPushButton {"// "background-color:rgba(255,255,255,0.5);"// "}"); m_allTools->setLayout(mainLayout);
这样实现的话,有子菜单的pushbutton的右边就会有一个三角形符号,如果加上图片就会影响美观。
那么如何做出美观的弹出菜单呢?
可以通过重载QPushbutton的clicked()信号来实现,在里面实现菜单的具体显示,代码如下:
//弹出框菜单void MainWindow::childToolSClicked(){#ifdef USERSCDS m_ChildTool->exec(QPoint(QCursor::pos().x() , QCursor::pos().y()));#endif}
m_ToolsBtn = new QPushButton(tr("Tool"), this); //m_ToolsBtn->setMenu(m_ChildTool); m_LayerBtn = new QPushButton(tr("Layer") , this); // m_LayerBtn->setMenu(m_ChildLayer); m_ColorBtn = new QPushButton(tr("Color"),this); //m_ColorBtn->setMenu(m_ChildColor); connect(m_ToolsBtn ,SIGNAL(clicked()),this , SLOT(childToolSClicked()) ); connect(m_LayerBtn ,SIGNAL(clicked()),this , SLOT(childLayerClicked()) ); connect(m_ColorBtn ,SIGNAL(clicked()),this , SLOT(childColorClicked()) );
关键代码就是这样的,其他的代码包括子菜单的创建等就参考上面的代码来写就可以了。
0 0
- Qt中如何利用QPushButton来实现一个弹出菜单
- 如何使QPushButton的弹出菜单在右侧弹出。
- Qt中如何利用 png 图片来实现自定义形状的窗口
- Qt中如何利用 png 图片来实现自定义形状的窗口
- 利用Qt来实现一个时钟小程序
- 如何通过JQuery来实现一个弹出div
- 问题 如何实现在listcontrol中右键弹出菜单啊?
- 请问QT中如何实现右击菜单。
- Qt 4.x实现QMenu菜单向上弹出菜单方法
- 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
- 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
- QT 如何实现使用 QPainter 的 drawPixmap() 函数将图片文件绘制到一个 QLabel、QPushButton 或者其他的一些设备上?
- QT 如何设置 QPushButton 的背景色
- QT 如何设置 QPushButton 的背景色 .
- Qt StyleShett 实现 Metro 风格之 - QPushButton
- QT QPushButton点击事件的实现
- QT中实现上下文菜单
- QT中实现上下文菜单
- UVa-11988 Broken Keyboard (a.k.a. Beiju Text)
- 设计模式——单例模式
- Echarts-java使用
- java线程研究---(6)暂停Thread:join
- POJ2418----Hardwood Species
- Qt中如何利用QPushButton来实现一个弹出菜单
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- js汉字转拼音的方法
- js日期格式化
- xcode提示: failed to get the task for process 解决方法
- Leetcode #7 Reverse Integer
- UITabbarViewController+Navigation框架下的子视图的跳转示例之一
- POJ 1276 Cash Machine(多重背包)
- Android的NDK开发(3)————JNI数据类型的详解