Qt显示一个控件一秒后消失.

sno_guo 2012-10-09 11:51:06
大家好,我想实现这样的一个效果: 一个小方块,等点击某个操作后,在屏幕的右下角显示一个反馈信息,等一秒后消失.有点
类似android手机里的退出提示控件ctoast,

我的代码思路是这样的: 继承一个QWidget,再里面放一个定时器,等时间到后,关闭当前这个Widget,这样做放到别的类中
构造函数还可以,可是放到普通函数中,就出现段错误,请问下这个是什么情况.

我的代码如下


#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QWidget>
#include <QtGui/QWidget>
#include <QTimer>
#include <QGroupBox>
#include <QLabel>
class CToast : public QWidget
{
Q_OBJECT
public:
explicit CToast(const int timeMs=10000,const QString string="set success!",QWidget *parent = 0);
~CToast();
private slots:
void closewidget();
private:
QLabel *label;
QGroupBox *grpWidget;
QTimer *timer;
};
#include <QTimer>
class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = 0);
~Widget();
private slots:
void timerouttest();
private:
QTimer *m_timer;
};

#endif // WIDGET_H





#include "widget.h"
#include <QHBoxLayout>
#include <QLabel>
#include <QDesktopWidget>
#include <QApplication>
#include <QMessageBox>
#include <QTimer>
#include <QGridLayout>
#include <QGraphicsColorizeEffect>
CToast::CToast(const int timeMs, const QString string, QWidget *parent)
: QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint); //设置无windows标题

setFixedSize(80,40);
move(200,150);
timer=new QTimer;
connect(timer,SIGNAL(timeout()),this,SLOT(closewidget()));
timer->start(timeMs);

setStyleSheet("background-color: black;border-radius:15px");

label=new QLabel((string));
label->setStyleSheet("color:white");

QGridLayout *rowWin=new QGridLayout;
rowWin->setContentsMargins(5,5,5,5);
rowWin->addWidget(label,0,0);
setLayout(rowWin);
}

CToast::~CToast()
{
delete label;
delete grpWidget;
delete timer;
timer=NULL;
}
void CToast::closewidget()
{
timer->stop();
close();
delete this;
}

Widget::Widget(QWidget *parent)
: QWidget(parent)
{
m_timer=new QTimer();
connect(m_timer,SIGNAL(timeout()),this,SLOT(timerouttest()));
m_timer->start(1000);
}

Widget::~Widget()
{

}
void Widget::timerouttest()
{
CToast *to1=new CToast(1000*1,"lajdsajs");
}
...全文
1325 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sno_guo 2012-10-11
  • 打赏
  • 举报
回复
再顶下,希望有人帮助解决下,谢谢!
sno_guo 2012-10-09
  • 打赏
  • 举报
回复 1
可是如果用创建一个局部变量的办法,又有问题了,我要显示的文字一定要在显示之前传过去,我怎样能让Widget在构造函数中不显示界面呢,谢谢?

sno_guo 2012-10-09
  • 打赏
  • 举报
回复
哦,谢谢,可是不这样做,我怎样让他消失呢,创建一个局部变量??
donwmufromdying 2012-10-09
  • 打赏
  • 举报
回复
delete this;
你这个代码比较惊悚啊!自己delete自己?
sno_guo 2012-10-09
  • 打赏
  • 举报
回复
哦,谢谢,这个QToolTip只是用在 控件的提示部分,可是我怎样能自由的控制他呢,如控制显示时间,等
lwtlwt0810 2012-10-09
  • 打赏
  • 举报
回复
试试QToolTip类
sno_guo 2012-10-09
  • 打赏
  • 举报
回复
我试过,用steVisible来做,是不行的,因为我无法在程序中创建局部变量,一定要用指针来new一个的,可是用指针,我怎样释放掉呢,谢谢!
stereoMatching 2012-10-09
  • 打赏
  • 举报
回复
setVisible(false)

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧