作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 QTableView
的子类,它在顶部嵌入了 QLineEdit
来过滤您键入的结果。我需要我的表格具有与普通 QTableView
相同的 API,因此我想对其进行子类化,而不是子类化 QWidget
并添加 QLineEdit
和QTableView
到它。
我想我可以重新实现paintEvent(QPaintEvent*)
,改变QPaintEvent
的rect()
来开始一点lower(QLineEdit
的高度,因此它在其下方绘制),然后将其传递给 QTableView::paintEvent()
,但是 QPaintEvent
> 参数仅指示需要重新绘制的区域,而不是应绘制小部件的区域。
最佳答案
您在这方面所做的任何事情都将是很麻烦的,并且会导致与手动将所有信号和槽映射到子窗口小部件一样多的工作(可能更多的工作)。您需要做的不仅仅是更改绘画事件,您还必须调整所有鼠标事件,调整任何更新矩形等。
或者,您可以从 Qt 源代码中获取 QTableView 类并直接修改它(尽管这可能会破坏 LGPL,并且如果您没有商业许可证,则需要您发布源代码。)但是最简单的干净方法将实现一个以 QTableView 作为子级的容器小部件。
关于qt - 如何子类化一个小部件以向其添加更多元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991477/
我是一名优秀的程序员,十分优秀!