• 6545阅读
  • 5回复

用 QStackedWidget,怎么实现窗口切换? [复制链接]

上一主题 下一主题
离线kanyou222
 
只看楼主 正序阅读 楼主  发表于: 2011-05-05
这里有两个界面,一个是显示go 的按钮 ,一个是显示back 的按钮,,我想按go 按钮 就进入到 back 这个按钮界面,然后在按back 就返回到go 这个按钮,因为按钮也是继承QWidget的,所以也可以作为一个widget

现在的问题,就是按go 按钮没反应啊,
我现在把代码贴出来了,我怎么也找不出哪里出错了,但 按按钮又没反应,纠结啊

//=====================================
#include<QWidget>

class QPushButton;
class QStackedWidget;

class MeunBt : public QWidget
{
    Q_OBJECT
public:
    MeunBt(QWidget *parent = 0);

    QPushButton  *go;
    QPushButton  *back;
    QStackedWidget *stack;
public slots:
        void change1();
        void change2();
};

//==========================================
#include<QtGui>
#include "meun.h"

MeunBt::MeunBt(QWidget *parent)
         : QWidget(parent)
{
    setWindowTitle(tr("STACKED"));

    go = new QPushButton(tr("go"));
    back = new QPushButton(tr("back"));

    QHBoxLayout *mainLayout = new QHBoxLayout;
    stack = newQStackedWidget(this);
    stack->addWidget(go);
    stack->addWidget(back);
    mainLayout->addWidget(stack);
    setLayout(mainLayout);

    connect(go,SIGNAL(clicked()),stack,SLOT(change1()));
    connect(back,SIGNAL(clicked()),stack,SLOT(change2()));
}

void MeunBt::change1()
{
    stack->setCurrentIndex(1);
}

void MeunBt::change2()
{
    stack->setCurrentIndex(0);
}

[ 此帖被kanyou222在2011-05-05 22:47重新编辑 ]
离线kanyou222
只看该作者 5楼 发表于: 2011-05-06
回 3楼(ppdayz) 的帖子
thank you
离线kanyou222
只看该作者 4楼 发表于: 2011-05-06
头脑发热了,这种低级的错误都发现不了
   connect(go,SIGNAL(clicked()),stack,SLOT(change1()));
    connect(back,SIGNAL(clicked()),stack,SLOT(change2()));
应该把 stack 改为 this ,因为change1 和change2 是 在这个类定义中声明的槽
所以要用this , 真笨死了
离线ppdayz

只看该作者 3楼 发表于: 2011-05-06
额  是你的reciver错了
connect(go,SIGNAL(clicked()),this,SLOT(change1()));
connect(back,SIGNAL(clicked()),this,SLOT(change2()));
[ 此帖被ppdayz在2011-05-06 13:57重新编辑 ]
离线kanyou222
只看该作者 2楼 发表于: 2011-05-06
回 1楼(ppdayz) 的帖子
高手,还是不行啊,我定义的两个槽 没有错吧?

我也按你说的做了,可是点击按钮还是没反应啊。
真纠结啊,我都不知道错在哪??
离线ppdayz

只看该作者 1楼 发表于: 2011-05-06
你要先new 2个widget才行
比如
QWidget *page;
QWidget *page_2;

page = new QWidget();
page_2 = new QWidget();

go = new QPushButton(page, tr("go"));
back = new QPushButton(page_2, tr("back"));
然后把page和page_2加入QStackedWidget


快速回复
限100 字节
 
上一个 下一个