如何在 QT 中获取按钮的绘制事件
Posted
技术标签:
【中文标题】如何在 QT 中获取按钮的绘制事件【英文标题】:How to get the paint event for Buttons in QT 【发布时间】:2010-02-11 06:04:16 【问题描述】:我是 QT 的新手, 我尝试了很多关于如何在 QT 中获取按钮绘制事件的示例。我没有办法做到这一点..
如何在 QT 中设置按钮的代表? 如何获取按钮的绘制事件?
我看了很多文章,上面说我们可以得到按钮的绘制事件,我们也可以自定义。 但我没有得到如何获得绘画事件的代码..
我尝试做这个示例,通过子分类我仍然没有得到事件。请告诉我我哪里错了
class Mybutton:QPushButton
public:
Mybutton(QObject *parent = 0)
void paintEvent ( QPaintEvent * );
;
void Mybutton::paintEvent(QPaintEvent* Paint)
Paint->rect();
int main(int argc, char *argv[])
QApplication a(argc, argv);
QPushButton *Newbutton = new QPushButton();
Newbutton->move(20,30);
Newbutton->show();
return a.exec();
我仍然无法获得事件。
请帮帮我。
谢谢
【问题讨论】:
QPushButton *Newbutton = new QPushButton();
应该是QPushButton *Newbutton = new Mybutton();
。
【参考方案1】:
您需要继承 QPushButton
并重新实现 paintEvent()
。
【讨论】:
嘿,我尝试通过子类化.. 仍然无法获取事件.. 我已经更新了帖子中的代码,请查看并告诉我缺少什么【参考方案2】:子类 QPushButton,例如class MyButton : public QPushButton...
。你似乎错过了公众。
paintEvent 是受保护的方法,因此您的公共覆盖将无法正常工作。
这不称为为 QPushButton 创建委托。您正在做的是对它进行子类化并重新实现其paintEvent。
【讨论】:
ya.. 我明白了.. 在 QT 中,我们需要为哪些控件创建委托?我知道 listview 之一,但我不知道休息吗?.. y 不是按钮?它背后的想法是什么? 好吧,只有项目视图(列表、表格和树视图)有委托。所有小部件都应该被子分类。以上是关于如何在 QT 中获取按钮的绘制事件的主要内容,如果未能解决你的问题,请参考以下文章