如何在 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 中获取按钮的绘制事件的主要内容,如果未能解决你的问题,请参考以下文章

Qt:在委托绘制事件中渲染时如何增加 QTablewidget?

如何在 qt 中为 GUI 添加可点击按钮

QT按钮如何打开本地视频

你如何在 QT 中绘制点?

qt中当鼠标移到按钮上如何改变颜色

如何通过拖动鼠标 QT 检查按钮?鼠标移动事件