处理QlistWidget单击和滚动
Handling QListWidget clicking and scrolling
我有一个带有某些项目(qlistWidgetItem的)的QlistWidget。当然,这些物品具有自己的控件,例如按钮,lineDits等...
对于我的qlistwidget,我在构造函数中设置了:
this->setAttribute(Qt::WA_AcceptTouchEvents, true);
this->grabGesture(Qt::TapGesture, Qt::IgnoredGesturesPropagateToParent | Qt::ReceivePartialGestures);
本质上是我的活动处理:
bool ListControl::event(QEvent* e)
{
auto event = e->type();
if (event == QEvent::TouchBegin)
{
auto touch = dynamic_cast<QTouchEvent*>(e);
if (touch)
{
return this->HandleTouch(touch, event);
}
}
...some code comes here...
return QListWidget::event(e);
}
当我返回 QEVENT :: TOUNBEGIN 手机 -Method时,我可以移动元素列表(qlistWidgetItems)。用"移动",我的意思是用手指在手机触摸屏幕上滚动列表。但是,我无法专注于对任何QlistWidgetItem的控制。
当我返回 QEVENT :: TOUNBEGIN QLISTWIDGEG :: EVENT(e)时,我将重点放在控件上,但是我无法再滚动列表。
我尝试了很多,但没有任何帮助。我该如何解决此问题,用手指移动/滚动列表,但也可以将注意力集中在控件上。
补充:我测量滴答液。如果小于150ms,那么我会得到单击的Qwidget。只有我没有设法向小部件发送消息,以便它做出反应。
好吧,我有一个解决方案!快速而肮脏的解释...技巧在触摸处理程序(Qevent :: touchbegin)中,您必须将焦点设置为录制的小部件。如果小部件是qpushbutton,则必须返回false,否则为true。这些解决方案对我有用!
const auto posf = event->touchPoints().first().pos();
QPoint position(posf.x(), posf.y());
auto widget = this->childAt(position);
if (widget)
{
widget->setFocus();
widget->activateWindow();
widget->raise();
}
auto button = dynamic_cast<QPushButton*>(widget);
result = (button == nullptr);
也许我可以帮助某人
相关文章:
- QTreeView幻灯片多选后无法使用单击选择
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- QML TableView 使用 QtQuick.Controls 2 单击行
- ImGui 在单击按钮后冻结
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 我想使用此代码单击某个特定窗口,但它无法正常工作
- 如何在QSplashScreen中禁用鼠标单击
- 单击一个按钮后创建一个按钮
- C++鼠标单击时的屏幕截图不起作用
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 标签检测鼠标单击 c++
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在单击 QPushButton 时调用带有参数的函数
- 如何在单击按钮FLTK的确切时刻获得小部件的值
- 如何使用鼠标单击选择多个 QLabel 对象?
- WM_PAINT基于按钮单击
- 在使用 c++ 的 win32 api 中,我想跟踪双击和三次单击等
- 如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?
- 处理QlistWidget单击和滚动