如何将窗口小部件子类化以向其添加更多元素?

4 qt subclass qtableview paintevent qlineedit

我正在尝试创建一个QTableView嵌入QLineEdit在顶部的子类,以便按照您的类型过滤结果.我需要我的表具有与普通相同的API QTableView,所以我想将其子类化而不是子类化QWidget并添加一个QLineEditQTableView它.

我以为我可以重新实现paintEvent(QPaintEvent*),改变它QPaintEventrect()开始有点低(a的高度QLineEdit,所以它在它之下绘制)然后通过它QTableView::paintEvent(),但是QPaintEvent参数只能决定哪个区域需要重新绘制,而不是应该绘制小部件的区域.

Ger*_*ald 7

你在这方面所做的任何事情都会变得很糟糕,并且会产生与将所有信号和插槽手动映射到子窗口小部件一样多的工作(可能更多的工作).除了更改绘制事件之外,您还需要做更多的事情,还必须调整所有鼠标事件,调整任何更新矩形等.

或者你可以从Qt源获取QTableView类并直接修改它(尽管如果你没有商业许可证,这可能会破坏LGPL并要求你发布你的源代码.)但最简单的方法是使用QTableView作为孩子实现容器小部件.