当前位置: 代码迷 >> QT开发 >> 用QT TIMER在一个窗体内循环展示一句话
  详细解决方案

用QT TIMER在一个窗体内循环展示一句话

热度:150   发布时间:2016-04-25 03:04:32.0
用QT TIMER在一个窗体内循环显示一句话?
代码运行结果老是一个空白窗体,没有字显示,什么原因啊
代码如下
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    timer = new QTimer(this);
    timer->setInterval(1000);
    timer->start();

    QObject::connect(timer,SIGNAL(timeout()),this,SLOT(displayword()));
}

void Widget::displayword()
{
     //label = new QLabel(QObject::tr("你好! 世界"));
   // printf("你好! 世界");
//text->setText("你好! 世界");
}

main.cpp如下:
#include "widget.h"
#include <QApplication>
#include <QTextCodec>
#include <QLayout>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));

    Widget w;
  w.show();

    return a.exec();
}



------解决思路----------------------
首先再timeout 响应槽 displayword里面打断点,看看响应 进去了没,是不是一秒响应一次!
如果响应正常,那么估计就是你组件显示的问题,没显示出来!
------解决思路----------------------
new QLabel时,传入this指针,把Widget作为QLabel的父亲。再调用一下show()或者setVisible()(不调用也可以)
------解决思路----------------------
labe没有显示在QWidget上,指定label的父组件为QWidget,传个this指针进去救考验了 。
------解决思路----------------------
1、连接信号槽请在计时器启动前
2、在头文件中声明Lable的指针,在计时器启动前创建,以this为父窗口,就会默认父窗口显示即显示
3、在显示函数中用指针调用setText即可
  相关解决方案