我已经创建了放置在上下文菜单中的多个动作。 现在我想将这些相同的操作添加到小工具栏中。问题是 工具栏应位于VerticalLayout(位于另一个窗口小部件下面) 而不是位于其中一个停靠栏区域内。有没有办法将 工具栏移动到自定义位置或将操作放置在另一个容器中?在窗口的任何位置放置动作
0
A
回答
0
QActions
只应该添加到菜单和工具栏。
如果我找到了你,那么你希望QActions
可以放置在正常的小部件上,对不对?
解决方法是实现您自己的QPushButton
类。给这个类添加一个addAction方法,它执行以下操作。它将QAction
添加为按钮的成员,将QAction的文本设置为按钮的标签,并将按钮的信号clicked()
连接到操作的插槽trigger()
。
事情是这样的:
void my_button::addAction(QAction* p_action)
{
if(pAction != NULL)
{
m_linked_action = p_action;
setText(m_linked_action->text());
connect(this,SIGNAL(clicked()),m_linked_action,SLOT(trigger()));
}
else
{
assert(false);
}
}
这只是一个非常粗略的例子。您需要考虑很多事情,例如在删除操作时正确断开信号等。你还必须了解可检测动作的特殊处理和类似的东西(按钮必须可检查,信号必须连接...)。但我认为这是一个很好的开始。
备选:
你也可以做什么,而不是连接,重新实现你的按钮的mouseReleaseEvent
和呼叫QAction::trigger()
那里。就像这样:
void my_button::mouseReleaseEvent(QMouseEvent* e)
{
if(e->button() == Qt::LeftButton)
{
if(m_linked_action != NULL)
{
m_linked_action->trigger();
}
}
QPushButton::mouseReleaseEvent(e);
}
通过做这样,你可以在任何地方将您的按钮,点击该按钮时所链接的动作将被触发。
相关问题
- 1. 如何将窗口放置在Android上的自定义位置?
- 2. 在文档中的任何位置放置Div,并在窗口调整大小后具有相同的位置
- 3. 窗口位置动画
- 4. 如何控制XNA在启动时放置游戏窗口的位置?
- 5. 手动设置窗口位置wpf mvvm
- 6. html5可拖动 - 任意放置位置?
- 7. 如何设置WPF窗口的位置?
- 8. 将用户配置文件放在窗口中的位置
- 9. 设置窗口位置
- 10. WPF窗口位置
- 11. WPF窗口位置
- 12. WPF窗口位置
- 13. WPF窗口位置
- 14. 用鼠标在窗口中的任何位置缩放/平移D3
- 15. 当鼠标移动到窗口中的任何位置时重置计时器
- 16. 将弹出窗口放置在自定义位置
- 17. 如何设置窗口位置?
- 18. Cocoa/ObjC:在模态窗口上放置一个浮动窗口
- 19. “会话”上的窗口位置动态
- 20. 更改WPF窗口的启动位置
- 21. 在中心设置窗口位置
- 22. 在Overwolf中设置窗口位置
- 23. 在窗口内设置位置libgdx
- 24. 知道自己位置或窗口滚动位置的DIV?
- 25. Android:在任意位置放置视图
- 26. 如果窗口小于X,则更改NgbPopover的放置位置
- 27. 如何在窗口的任务栏上方设置tkiner窗口
- 28. Qt的子窗口位置
- 29. 改变窗口的位置
- 30. PyQt - 窗口的位置