代码运行结果老是一个空白窗体,没有字显示,什么原因啊
代码如下
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即可