• 4708阅读
  • 7回复

关于paintEvent,怎么能把已经画的图形删掉。 [复制链接]

上一主题 下一主题
离线natuly
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-28
想根据不同的signal,使窗口显示不同的曲线。
基类是Qwiget,对于paintEvent还是不太了解。
离线guyansrg

只看该作者 1楼 发表于: 2009-09-28
参考一下
void QWidget::update ()   [slot]
void QWidget::repaint ()   [slot]



重新刷新界面。
在paintEvent()事件里编写要显示的代码。比如要在标签里显示新的文字 之类的。
当触发paintEvent() 槽时,paintEvent()会自动调用repaint () 槽, 立刻重新绘制界面。
[ 此帖被guyansrg在2009-09-28 21:36重新编辑 ]
离线natuly
只看该作者 2楼 发表于: 2009-09-28
还有要重新改变ui中的Qlabel,这个想在ui自动生成的ui_*头文件中改,总是感觉有点不妥,不知道怎么办。
我是利用ui跟paintEvent共同做的界面。
离线guyansrg

只看该作者 3楼 发表于: 2009-09-28
ui_*头文件里的东西改了也白改。每次编译的时候,会被覆盖掉的。
可以重新编写一个类,继承一下UI就可以。

举个例子:
#ifndef LOGIN_H
#define LOGIN_H

#include <QCloseEvent>

#include "ui_login.h"
#include "account.h"

class Login : public QWidget, public Ui_Login
{
    Q_OBJECT

public:
    Login(QWidget *parent = 0);

private slots:
    void paintEvent(QpaintEvent *e);
};

#endif

ui_login.h 就是界面自动生成的头文件。
离线natuly
只看该作者 4楼 发表于: 2009-09-28
还是不太明白
离线guyansrg

只看该作者 5楼 发表于: 2009-09-28
放上个小例子,不知道对你会不会有用
描述:一个自动关闭的登录窗口
附件: login.zip (6 K) 下载次数:8
离线natuly
只看该作者 6楼 发表于: 2009-09-28
多谢这位大哥,我自己再研究研究。
离线guyansrg

只看该作者 7楼 发表于: 2009-09-28
login.h头文件里的 void timeUpdate() 槽就相当于 void QWidget::update ()   [slot]
当timeUpdate() 执行时,就会发生 QPaintEvent 事件。界面会被刷新。
快速回复
限100 字节
 
上一个 下一个