• 3468阅读
  • 4回复

Qt问题紧急求助 [复制链接]

上一主题 下一主题
离线shifan
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-27
////Hello_world.cpp
#include<qapplication.h>
#include"my_widget.h"

int main(int argc,char **argv)
{
QApplication a(argc,argv);

my_widget w;
a.setMainWidget(&w);
w.show();
return a.exec();
}
/////my_widget.h
#ifndef TRACK
#define TRACK

#include<qwidgetstack.h>

class QPushButton;

class my_widget:QWidgetStack
{
Q_OBJECT
public:
my_widget(QWidget *parent=0,const char *name=0);
private:
QPushButton *one;

};

#endif
/////////my_widget.cpp
#include"my_widget.h"
#include<qpushbutton.h>

my_widget::my_widget(QWidget *parent,const char *name)
:QWidgetStack(parent,name)
{
addWidget(one,1);
emit aboutToShow(1);
}

出错信息:
QWidget是my_widget不可访问的基类
visual void QWidgetStack::show()无法访问
在此上下文中QWidgetStack是my_widget不可访问的基类

我看了半天百思不得其解,请问大侠是哪里出了问题?

离线duduqq

只看该作者 1楼 发表于: 2009-07-27
class my_widget:QWidgetStack
是不是这里少了public,试试这样写
class my_widget:public QWidgetStack
离线shifan
只看该作者 2楼 发表于: 2009-07-27
像楼上说的那样改之后可以编译通过了,但是运行时显示
段错误

不知是怎么回事。
离线rqzrqh

只看该作者 3楼 发表于: 2009-07-27
one = new   QPushButton();
声明了一个指针是在栈上进行分配空间的,而且里面的内容是随机的。你随随便便就把有个随机地址内的内容作为一个类肯定是不行的。所以需要new在堆上分配空间,然后把这个空间的地址赋给栈上的4字节指针
离线shifan
只看该作者 4楼 发表于: 2009-07-27
十分感谢两位大侠,终于可以跑了!
快速回复
限100 字节
 
上一个 下一个