我的
问题是在stackwidget中加入的
widget中怎么加入
按钮功能,我下面是我程序的代码:
//main.cpp
#include <QtGui/QApplication>  
#include "layout1.h"  
int main(int argc, char *argv[])  
{  
    QApplication a(argc, argv);  
    layout1 w;  
    w.show();  
    return a.exec();  
} 
//-------------
//layout1.h
#ifndef LAYOUT1_H  
#define LAYOUT1_H  
#include <QtGui/QDialog>  
#include <QWidget>  
#include <QtGui>
#include "widget1.h"  
class layout1 : public QWidget  
{  
     Q_OBJECT  
public:  
    layout1(QWidget *parent = 0);  
public slots:  
    void saveData();  
private:  
    QListWidget  *listWidget;  
    QStackedWidget *stackedWidget;
    QPushButton *saveButton;  
    QPushButton *cancelButton; 
    Widget1 *widget1;   
};  
#endif // LAYOUT1_H  
 //-------------------------
//widget1.h
#ifndef WIDGET1_H  
#define WIDGET1_H  
#include <QWidget>  
#include <QLineEdit>  
#include <QVBoxLayout>  
#include <QHBoxLayout>  
#include <QLabel>  
#include <QPushButton>
class Widget1 : public QWidget  
{  
public:  
    Widget1();  
    QLineEdit nickNameEdit;
    QLineEdit accountEdit;   
    QLineEdit mailEdit;  
 public slots:
  void opeSlot();
private:  
 QPushButton *ope;
};  
#endif // WIDGET1_H
//layout1.cpp
#include "layout1.h"  
#include <QSettings>  
#include <QMessageBox>layout1::layout1(QWidget *parent):QWidget(parent)  
{  
 listWidget=new 
QListWidget;
 stackedWidget=new QStackedWidget;
 saveButton=new QPushButton("change stackwidget");//从主
窗口可以实现
 cancelButton=new QPushButton("cancel");    
 widget1=new Widget1;
    connect(listWidget,SIGNAL(currentRowChanged(int)),stackedWidget,SLOT(setCurrentIndex(int)));  
    connect(saveButton,SIGNAL(pressed()),this,SLOT(saveData()));  
    connect(cancelButton,SIGNAL(pressed()),this,SLOT(close()));   
 QHBoxLayout *hLayout=new QHBoxLayout;
    QHBoxLayout *buttonLayout=new QHBoxLayout;
    QVBoxLayout *vLayout=new QVBoxLayout; 
    buttonLayout->addWidget(saveButton);  
    buttonLayout->addWidget(cancelButton);      
    listWidget->addItem("basic info");   
    stackedWidget->addWidget(widget1);  
    stackedWidget->setCurrentIndex(1); 
 hLayout->addWidget(listWidget,1);  
    hLayout->addWidget(stackedWidget,2); 
    vLayout->addLayout(hLayout);  
    vLayout->addLayout(buttonLayout);   
    setLayout(vLayout);  
}  
void layout1::saveData()  
{   
 widget1->nickNameEdit.setText("11111");
 widget1->accountEdit.setText("2222");
 widget1->mailEdit.setText("3333"); QMessageBox::information(this,"he","hhhhhh",QMessageBox::Yes);
}  
 //widget1.cpp
#include "widget1.h"  
Widget1::Widget1()  
{  
  nickNameEdit.setText("nickname");
  accountEdit.setText("account");
  mailEdit.setText("mail");
  ope=new QPushButton("ope");//从stackedWidget中操作没能实现  QVBoxLayout *layout=new QVBoxLayout;
  layout->addWidget(&nickNameEdit);
  layout->addWidget(&accountEdit);
  layout->addWidget(&mailEdit);
  layout->addWidget(ope);
  connect(ope,SIGNAL(clicked()),this,SLOT(opeSlot()));  setLayout(layout);  
}  
void Widget1::opeSlot()
{//这说明 QStackedWidget 中 widget 的 
button 不能操作,(或我还不知道怎么用)\
 //要想操作widget中的内容,现在只能从主
界面的layout1中按钮来实现
 nickNameEdit.setText("opeSlot");
 accountEdit.setText("opeslot(");
 mailEdit.setText("mailSop");
} 
执行的结果 如下 :

单击ope不执行,下面的按钮可以执行,为什么?我希望在 Widget1 中具有按钮功能,应该怎么做?