qt - 如何子类化一个小部件以向其添加更多元素?

标签 qt subclass qtableview qlineedit paintevent

我正在尝试创建一个 QTableView 的子类,它在顶部嵌入了 QLineEdit 来过滤您键入的结果。我需要我的表格具有与普通 QTableView 相同的 API,因此我想对其进行子类化,而不是子类化 QWidget 并添加 QLineEditQTableView 到它。

我想我可以重新实现paintEvent(QPaintEvent*),改变QPaintEventrect()来开始一点lower(QLineEdit 的高度,因此它在其下方绘制),然后将其传递给 QTableView::paintEvent(),但是 QPaintEvent > 参数仅指示需要重新绘制的区域,而不是应绘制小部件的区域。

最佳答案

您在这方面所做的任何事情都将是很麻烦的,并且会导致与手动将所有信号和槽映射到子窗口小部件一样多的工作(可能更多的工作)。您需要做的不仅仅是更改绘画事件,您还必须调整所有鼠标事件,调整任何更新矩形等。

或者,您可以从 Qt 源代码中获取 QTableView 类并直接修改它(尽管这可能会破坏 LGPL,并且如果您没有商业许可证,则需要您发布源代码。)但是最简单的干净方法将实现一个以 QTableView 作为子级的容器小部件。

关于qt - 如何子类化一个小部件以向其添加更多元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991477/

相关文章:

c++ - 将 QFile 转换为文件*

c++ - Qt 委托(delegate)为复选框设置鼠标悬停状态

c++ - 在 keyPressEvent 上崩溃

c++ - 将 QVariant 转换为 QVector<int>

python 子类

nhibernate - Fluent NHibernate - 加入子类ForeignKey Name

java - 您可以定义抽象类的子类而不定义父类(super class)中定义的任何抽象方法吗?为什么?

python - 表格出现前的QtableView占位符文本

c++ - 如何在 QTableView 中排序和更改日期格式

qt - X-Windows、wxWidgets、GTK/Qt 和 OpenGL 有什么区别?