• 6084阅读
  • 14回复

[提问]Qt4 怎样把 clicked()动作 和一个自定义函数connect起来 [复制链接]

上一主题 下一主题
离线a290207265
 
只看楼主 倒序阅读 楼主  发表于: 2012-08-17
在同一个类中 有按钮 enter_Button 和一函数 enter()
然后使按下按钮就执行enter()函数

    QObject::connect(enter_button, SIGNAL(clicked()),
                    this,SLOT(enter()) );


但是报错: error: no matching function for call to 'QObject::connect(QPushButton*&, const char [11], Login* const, const char [21])'
为什么啊..

新人一枚..大家说的详细一点
..不留名
离线jdwx

只看该作者 1楼 发表于: 2012-08-17
回 楼主(a290207265) 的帖子
把enter()放到private slots:标签下边。
如下,头文件内:
private slots://没有这个标签自己增加。
      void enter();
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wangfj
只看该作者 2楼 发表于: 2012-08-17
看看头文件的类中是否有:Q_OBJECT
class 类名:public 类名
{
Q_OBJECT

......
}
离线a290207265
只看该作者 3楼 发表于: 2012-08-17
回 1楼(jdwx) 的帖子
我已经放在protected slots 下了
跟 槽函数 的内容是空的有关么..?
..不留名
离线a290207265
只看该作者 4楼 发表于: 2012-08-17
回 2楼(wangfj) 的帖子
class 类名{
Q_OBJECT
...
}
我加上去了,但是还是报这个错啊..
..不留名
离线jdwx

只看该作者 5楼 发表于: 2012-08-17
回 4楼(a290207265) 的帖子
enter_button 是指针吗?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线a290207265
只看该作者 6楼 发表于: 2012-08-17
回 5楼(jdwx) 的帖子
QPushButton *enter_button = new QPushButton("&Enter",widget);
..不留名
离线wxj120bw

只看该作者 7楼 发表于: 2012-08-17
回 6楼(a290207265) 的帖子
Login类声明出错了 贴下代码看看吧
离线a290207265
只看该作者 8楼 发表于: 2012-08-18
回 7楼(wxj120bw) 的帖子
login.h
#include <QApplication>
#include <QtGui>
#include <QDialog>

#ifndef LOGIN_H
#define LOGIN_H

class Login{

public:
    Login();
    void button(QWidget *widget);
    ...
protected slots:
    void enter();
};

#endif // LOGIN_H


login.cpp
#include "login.h"

...

void Login::button(QWidget *widget){
    QPushButton *enter_button = new QPushButton("&Enter",widget);
    QObject::connect(enter_button, SIGNAL(clicked()),
                    this, SLOT(enter() ) );
    login_button -> move(400, 500);
}

void Login::enter(){
}
..不留名
离线dbzhang800

只看该作者 9楼 发表于: 2012-08-18
嗯,前面说的不错。 不光是没有Q_OBJECT,而且还不是QObject的派生类
离线a290207265
只看该作者 10楼 发表于: 2012-08-18
回 9楼(dbzhang800) 的帖子
class Login : public QObject{
    Q_OBJECT
后,出现undefined reference to `vtable for Login' 的神奇错误
..不留名
离线呆呆很呆
只看该作者 11楼 发表于: 2012-08-18
回 10楼(a290207265) 的帖子
把缓存文件*.o文件和Makefile文件删掉,重新支持qmake
离线a290207265
只看该作者 12楼 发表于: 2012-08-18
回 11楼(呆呆很呆) 的帖子
原来如此~!
然后怎样才能把 enter() 加入参数呢?
改为 enter(QWidget *widget) 后出现
No such slot Login::enter(widget)
..不留名
离线呆呆很呆
只看该作者 13楼 发表于: 2012-08-19
回 12楼(a290207265) 的帖子
信号没有参数槽是不能有参数的,你想传入参数做什么?
离线a290207265
只看该作者 14楼 发表于: 2012-08-19
回 13楼(呆呆很呆) 的帖子
恩..我知道该怎么做了:QSignalMapper可以把无参信号转化为有参
..不留名
快速回复
限100 字节
 
上一个 下一个