用滚轮控制滚动条水平移动、垂直移动(table/tree)

一般控件,滚轮默认滚动垂直滚动条,比如表格、树。我们可以通过重写滚轮事件来控制滚动方向(水平:shift+wheel  垂直:wheel)

一、自定义的滚动条QScrollBar

void ScrollW::wheelEvent(QWheelEvent *event)
{
	int delta = event->delta();
	int m = event->modifiers();
	QAbstractSlider::SliderAction act;
	if (delta < 0)
		act = QAbstractSlider::SliderSingleStepAdd;
	else
		act = QAbstractSlider::SliderSingleStepSub;

	if (m == Qt::ShiftModifier)
	{
		scrollBarH->triggerAction(act);
	}
	else
	{
		scrollBarV->triggerAction(act);
	}

}

若需要屏蔽掉滚动,直接event->ignore().


二、自带滚动条控件(table/tree)

需要滚轮事件+键盘事件组合

void TableW::wheelEvent(QWheelEvent *event)
{
	int delta = event->delta();
	int m = event->modifiers();
	if (m == Qt::ShiftModifier)
	{
		QAbstractSlider::SliderAction act;
		if (delta < 0)
		{
			act = QAbstractSlider::SliderSingleStepAdd;
		}
		else
		{
			act = QAbstractSlider::SliderSingleStepSub;
		}
		m_table->horizontalScrollBar()->triggerAction(act);
	}
	
}

void TableW::keyPressEvent(QKeyEvent *event)
{
	int m = event->modifiers();
	if ((m == Qt::ShiftModifier))
	{
		m_table->verticalScrollBar()->setDisabled(true);
	}
	TableParW::keyPressEvent(event);  //父处理
}

void TableW::keyReleaseEvent(QKeyEvent *event)
{
	m_table->verticalScrollBar()->setDisabled(false);
	TableParW::keyReleaseEvent(event);  
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 13:02:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 13:02:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 13:02:01       82 阅读
  4. Python语言-面向对象

    2024-03-28 13:02:01       91 阅读

热门阅读

  1. 蓝桥杯刷题--python-32

    2024-03-28 13:02:01       47 阅读
  2. ubuntu不兼容腾讯会议wayland协议

    2024-03-28 13:02:01       41 阅读
  3. 深度学习入门指南:掌握人工智能的未来

    2024-03-28 13:02:01       46 阅读
  4. Doris 数据集成 Catalog

    2024-03-28 13:02:01       42 阅读
  5. unity防止ui点击事件被子物体拦截

    2024-03-28 13:02:01       43 阅读
  6. python asyncio websockets server

    2024-03-28 13:02:01       40 阅读
  7. mac系统使用经验

    2024-03-28 13:02:01       41 阅读
  8. ajaxpro CVE-2021-23758 漏洞记录

    2024-03-28 13:02:01       44 阅读