• 7128阅读
  • 8回复

信号与槽的问题 [复制链接]

上一主题 下一主题
离线liyayao
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-14
#ifndef __MYWIDGET_H__
#define __MYWIDGET_H__
#include <QWidget>
#include <QListWidget>
class MyWidget : public QWidget
{
public:
        MyWidget(QWidget *parent = 0);
private slots:
void sure();        
private:        
        QListWidget *listwidget;
};

#endif

#include <QApplication>
#include <QPushButton>
#include <QFont>
#include <QGridLayout>

#include "mywidget.h"


MyWidget::MyWidget(QWidget *parent)
        : QWidget(parent)
{

        QPushButton *quit = new QPushButton(tr("sure"));
        quit->setFont(QFont("Times", 18, QFont::Bold));
        QListWidget *listwidget = new QListWidget;
        
        connect(quit, SIGNAL(clicked()), this, SLOT(sure()));

        QVBoxLayout *layout = new QVBoxLayout;
        layout->addWidget(listwidget);
        layout->addWidget(quit);
        setLayout(layout);
}
void MyWidget::sure()
{
    listwidget->addItem( QString( "Successful!" ) );    
}

#include <QApplication>
#include "mywidget.h"

int main(int argc, char *argv[])
{
        QApplication app(argc, argv);
        MyWidget widget;
        widget.show();
        
        return app.exec();
}



问题:Object::connect: No such slot QWidget::sure()
离线machou

只看该作者 1楼 发表于: 2009-07-14
connect(quit, SIGNAL(clicked()), this, SLOT(sure())); 这个地方一般都用pressed()
离线machou

只看该作者 2楼 发表于: 2009-07-14
老兄,你没有Q_OBJECT; connect肯定不会被触发了
离线liyayao

只看该作者 3楼 发表于: 2009-07-14
加入了Q_OBJECT之后就出现---应用程序错误.不知道什么原因........
离线liyayao

只看该作者 4楼 发表于: 2009-07-14
至于pressed()的能说清楚一点吗?
离线浪漫天使
只看该作者 5楼 发表于: 2009-07-14
又是c++的问题
构造函数里面的listwidget
QListWidget *listwidget = new QListWidget;
不是 void MyWidget::sure() 函数里面的 listwidget
在void MyWidget::sure() 函数里面 listwidget 还是空的
你点sure能不死么。。。

解决方法是

QListWidget *listwidget = new QListWidget;
改成
listwidget = new QListWidget;
离线liyayao

只看该作者 6楼 发表于: 2009-07-14
多谢浪漫天使指教.........
离线usa9002

只看该作者 7楼 发表于: 2009-07-15
你没学过C++啊?
离线liyayao

只看该作者 8楼 发表于: 2009-07-15
有啊,刚学的,并不是很懂,...........
快速回复
限100 字节
 
上一个 下一个