如何突出显示特定的“QWidget”
How to highlight a specific `QWidget`
对于搜索/链接行为,这个想法是突出显示搜索产生的特定QWidget
。
在我的第一个原型中,它只是在给定的QWidget
之上创建一个用于突出显示的装饰。但是,当调整小部件大小时,突出显示不会适应/对齐。
DecorationWidget decoration;
...
QWidget* result = search(searchStr);
if (result)
{
decoration.setParent(result);
decoration.setGeometry(QRect(QPoint(0,0),result->size()));
decoration.raise();
decoration.show();
}
else
{
decoration.hide();
}
如何检测调整大小QWidget
?
我显然是关于连接的,但QWidget
在调整大小时不会发出。也不允许extends
小部件,因为搜索可能指向任何任意QWidget
。
不允许更改QWidget
本身的样式(实际上更改 QWidget 的任何内容(,因为它可能具有特定的样式或PaintEvent
实现。
它可以很容易地用事件过滤器完成。
在 DecorationWidget 中,覆盖 eventFilter 方法(派生自 QObject(并在那里捕获调整大小事件。
例如:
bool DecorationWidget::eventFilter(QObject* watched, QEvent* event)
{
if(event->type() == QEvent::Resize)
{
QResizeEvent *resizeEvent = static_cast<QResizeEvent *>(event);
resize(resizeEvent->size());
}
return false;
}
比在结果小部件上安装 DecorationWidget 的实例作为事件过滤器:
result->installEventFilter(myDecorationWidget);
请记住在切换到另一个小部件时删除事件过滤器。
prevoiusResult->removeEventFiter(myDecorationWidget);
有关事件过滤器的文档
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在QT Creator上将QWidget声明为继承类的对象
- QWidget::p aintEngine:不应再在 QTreeWidget 派生类中调用
- 在C++中释放内存期间,迭代器与指针有何不同
- 将一个 QWidget 链接到另一个新创建的 QWidget
- 为什么 isVisible 在 QWidget 孩子中不起作用
- 如何声明全局QWidget?
- QWidget UI 在使用 QQuickWidget 时冻结
- "(QWidget* pobj=0)"和"(QWidget* pwgt/*=0/)&quo
- 创建具有验证和语法突出显示的自定义 printf
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 类中的 C++ int 被设置为值,似乎不知从何而来
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- qt QWidget::closeEvent link issue
- 如何在QMdiSubWindow关闭后删除QWidget
- 如何在QGraphicsView中移动QWidget?
- 以编程方式在任何按钮上突出显示 Qt 鼠标悬停按钮
- 如何突出显示特定的“QWidget”