在实现的过程中:
#include "changevalue.h"
#include <QtGui>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
changeValue w;
w.show();
QTimer * timer = new QTimer(w);
connect( &timer, SIGNAL(timeout()), w, SLOT(changeVal()) );
timer->start(100);
return a.exec();
}
期中slot changeVal()是我自己写的,
void changeValue::changeVal()
{
QLabel *lb=new QLabel;
int str =rand()%100;
lb->setNum(str);
}
但是出现了如下错误
no matching function for call to 'QTimer::QTimer(changeValue&)' main.cpp /changeValue line 11 C/C++ Problem
no matching function for call to 'changeValue::connect(QTimer**, const char*, changeValue&, const char*)' main.cpp /changeValue line 12 C/C++ Problem
怎么解决啊?谢谢帮忙解决一下!
12 个解决方案
#1
void changeValue::changeVal()
你把它 申明成 slot 了吗?
QTime 属于 QtCore 不是 QtGui
所以你还要加上 #include <QTimer>
你把它 申明成 slot 了吗?
QTime 属于 QtCore 不是 QtGui
所以你还要加上 #include <QTimer>
#2
connect( timer, SIGNAL(timeout()), &w, SLOT(changeVal()) );
请仔细阅读connect函数。
请仔细阅读connect函数。
#3
connect( timer, SIGNAL(timeout()), &w, SLOT(changeVal()) );
而且每次都new一个QLabel (QLabel *lb=new QLabel;),这样也不好的吧……
而且每次都new一个QLabel (QLabel *lb=new QLabel;),这样也不好的吧……
#4
还没来得及去学习
#5
我申明成 slot了。
那个头文件也#include了...
#6
QTimer * timer = new QTimer(w);
connect( &timer, SIGNAL(timeout()), w, SLOT(changeVal()) );
QTimer指定父类的意义是什么?
connect方法中&timer和w这些参数有合适的重载吗?
connect( &timer, SIGNAL(timeout()), w, SLOT(changeVal()) );
QTimer指定父类的意义是什么?
connect方法中&timer和w这些参数有合适的重载吗?
#7
恩,学习了
#8
changeValue是类还是方法?
#9
changeValue的内容是什么,贴出来看看。
#10
貌似后面还需要填上ConnectionType, 可是我加上 w.connect(timer,SIGNAL(timeout()),SLOT(changeVal()),Qt::AutoConnection);后,结果也没有出现我预想的结果
#11
是我定义的类
#12
#include "changevalue.h"
#include <QtGui>
#include<QtCore>
#include <QApplication>
#include <QLabel>
#include<ui_changevalue.h>
using namespace Ui;
changeValue::changeValue(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
changeValue::~changeValue()
{
}
void changeValue::changeVal()
{
changeValueClass ui; //=new changeValueClass();
QLabel *lb=ui.label;
int str =rand()%100;
lb->setNum(str);
}
#1
void changeValue::changeVal()
你把它 申明成 slot 了吗?
QTime 属于 QtCore 不是 QtGui
所以你还要加上 #include <QTimer>
你把它 申明成 slot 了吗?
QTime 属于 QtCore 不是 QtGui
所以你还要加上 #include <QTimer>
#2
connect( timer, SIGNAL(timeout()), &w, SLOT(changeVal()) );
请仔细阅读connect函数。
请仔细阅读connect函数。
#3
connect( timer, SIGNAL(timeout()), &w, SLOT(changeVal()) );
而且每次都new一个QLabel (QLabel *lb=new QLabel;),这样也不好的吧……
而且每次都new一个QLabel (QLabel *lb=new QLabel;),这样也不好的吧……
#4
还没来得及去学习
#5
我申明成 slot了。
那个头文件也#include了...
#6
QTimer * timer = new QTimer(w);
connect( &timer, SIGNAL(timeout()), w, SLOT(changeVal()) );
QTimer指定父类的意义是什么?
connect方法中&timer和w这些参数有合适的重载吗?
connect( &timer, SIGNAL(timeout()), w, SLOT(changeVal()) );
QTimer指定父类的意义是什么?
connect方法中&timer和w这些参数有合适的重载吗?
#7
恩,学习了
#8
changeValue是类还是方法?
#9
changeValue的内容是什么,贴出来看看。
#10
貌似后面还需要填上ConnectionType, 可是我加上 w.connect(timer,SIGNAL(timeout()),SLOT(changeVal()),Qt::AutoConnection);后,结果也没有出现我预想的结果
#11
是我定义的类
#12
#include "changevalue.h"
#include <QtGui>
#include<QtCore>
#include <QApplication>
#include <QLabel>
#include<ui_changevalue.h>
using namespace Ui;
changeValue::changeValue(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
changeValue::~changeValue()
{
}
void changeValue::changeVal()
{
changeValueClass ui; //=new changeValueClass();
QLabel *lb=ui.label;
int str =rand()%100;
lb->setNum(str);
}