QT中的自动排放工具按钮
autoexclusive tool buttons in Qt
在这里,我提出了另一个问题,这次是关于QT工具按钮自动排斥属性的。请在下面找到我的问题:
q)我有4个彼此自动排斥的工具按钮,但是我面临的问题是,当我希望取消选择"选定"按钮时,它不允许我这样做(这是QT中的定义行为),但我想要每个按钮可以相互排斥,并可以在单击选定的按钮时取消选择。谁能帮助我解决这种情况。程序化示例更有帮助。
预先感谢keshav
我有类似的要求,最终为Qactions开发一个小容器,该容器大约具有以下接口:
class ExclusiveActionGroup : public QObject
{
Q_OBJECT
public:
explicit ExclusiveActionGroup(QObject *parent = 0);
QAction * addAction ( QAction * action );
const QAction * checkedAction() const;
void untrigger();
protected slots:
void slotActionToggled(bool);
private:
QList<QAction*> actions;
};
slotActionToggled
挂钩到添加动作的切换函数,并处理整个组的组的排他性以及取消选择(未触发)。请注意,slotActionToggled
可能是在取消选择相应QACTION的过程中触发的,因此您的代码应处理此操作(而不是再次切换操作,这会触发undoggling,这...)
附加完整实现:
#include "exclusiveactiongroup.h"
#include <QAction>
#if defined(_MSC_VER) && defined(_DEBUG)
#define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )
#define new DEBUG_NEW
#endif // _MSC_VER
ExclusiveActionGroup::ExclusiveActionGroup(QObject *parent) :
QObject(parent)
{
}
QAction * ExclusiveActionGroup::addAction ( QAction * action )
{
actions.push_back(action);
connect(action, SIGNAL(toggled(bool)), this, SLOT(slotActionToggled(bool)));
return action;
}
void ExclusiveActionGroup::slotActionToggled ( bool checked )
{
QAction* action = qobject_cast<QAction*>(sender());
if (action && checked)
{
foreach(QAction* uncheck, actions)
{
if (uncheck != action)
{
uncheck->setChecked(false); // triggers recursion, doesnt matter though
}
}
}
}
const QAction* ExclusiveActionGroup::checkedAction() const
{
foreach(const QAction* a, actions)
{
if (a->isChecked())
{
return a;
}
}
return 0;
}
void ExclusiveActionGroup::untrigger()
{
foreach(QAction* a, actions)
{
if (a->isChecked())
{
a->trigger();
break;
}
}
}
相关文章:
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 在clang++预处理器中确定gcc工具链版本
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- QT中的自动排放工具按钮
- 单击工具按钮后,在GTKMM工具栏中更改工具按钮图标
- 如何在橘子酱工具的UI中添加按钮
- Win32 工具栏下拉按钮消息处理
- QT按钮按下小工具
- 以编程方式从 MFC 工具栏中完全删除按钮
- 如何以编程方式将工具按钮移动到右侧工具栏区域
- 如何将自定义小部件添加为工具按钮的弹出菜单
- 如何在Qt小工具中删除带有插槽的按钮
- 在按钮文本中带下划线快捷键的工具栏
- 从IE工具栏按钮调用BHO
- Qt复选框/工具按钮,带有自定义/不同的检查/未选中的图标