• 7170阅读
  • 5回复

[提问]错在哪里?点击一个QPushButton,改变QLabel的内容,可以运行,但一点button后就报应用程序错误 [复制链接]

上一主题 下一主题
离线stanley1023
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-30
widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QLabel>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QLabel *label;
    QPushButton *button;  
private slots:
    void setlabel();
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    void setlabel();
    QLabel *label=new QLabel("push");
    QPushButton *button=new QPushButton(tr("click"));
    connect(button,SIGNAL(clicked()),this,SLOT(setlabel()));
    QVBoxLayout *layout=new QVBoxLayout;
    layout->addWidget(label);
    layout->addWidget(button);
    this->setLayout(layout);
}
Widget::~Widget()
{
}
void Widget::setlabel()
{
   this->label->setText("change text");
}

本来想实现点下button后,就改变qlabel的text。[/pre][pre]求助各位高人啊,这个程序我调试了三天了,但每次一点button就弹出说应用程序错误我都不知道错在哪里!!!!!
[ 此帖被stanley1023在2011-04-30 13:34重新编辑 ]
离线ppdayz

只看该作者 1楼 发表于: 2011-04-30
在你的代码上改的,建议先去看下C++的书
  1. #include "widget.h"
  2. #include <QVBoxLayout>
  3. Widget::Widget(QWidget *parent)
  4.     : QWidget(parent)
  5. {
  6.     label=new QLabel("push");
  7.     QPushButton *button=new QPushButton(tr("click"));
  8.     connect(button,SIGNAL(clicked()),this,SLOT(setlabel()));
  9.     QVBoxLayout *layout=new QVBoxLayout;
  10.     layout->addWidget(label);
  11.     layout->addWidget(button);
  12.     this->setLayout(layout);
  13. }
  14. Widget::~Widget()
  15. {
  16. }
  17. void Widget::setlabel()
  18. {
  19.    label->setText("change text");
  20. }
[ 此帖被ppdayz在2011-04-30 14:15重新编辑 ]
离线dbzhang800

只看该作者 2楼 发表于: 2011-04-30
恩,你只给他改了一半,QPushButton 那个还没改
离线roywillow

只看该作者 3楼 发表于: 2011-04-30
没搞懂构造函数中的setlabel是干嘛的……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ppdayz

只看该作者 4楼 发表于: 2011-04-30
回 2楼(dbzhang800) 的帖子
的确是的,pushbutton没有改的话,进一步代码会出问题,多谢指出来
离线83888788
只看该作者 5楼 发表于: 2011-05-01
QLabel *label=new QLabel("push");
QPushButton *button=new QPushButton(tr("click"));

导致成员(类体中)(label,button)没有得到所需要的内存空间(因为你这个生命覆盖了类体中的成员)

所以你的label和button(类体中的)实际上是野指针
快速回复
限100 字节
 
上一个 下一个