QT5 QStackedWidget使用的问题

刹那X逍遥 2016-05-29 04:21:23
addWidget()与setCurrentIndex()配套使用,有顺序要求吗?
第一个addWidget引索为0?以后依次增加?
调用setCurrentIndex()就会切换到引索对应的页面?

#include "ManagerManage.h"
#include "ui_ManagerManage.h"

ManagerManage::ManagerManage(QWidget *parent) :
QDialog(parent),
ui(new Ui::ManagerManage)
{
ui->setupUi(this);
this->setWindowTitle("管理员界面");

//连接退出系统按钮信号和槽
connect(ui->ButtonExit, SIGNAL(clicked()), this, SLOT(ButtonExitSlot()));
//连接返回按钮信号和槽
connect(ui->ButtonReturn, SIGNAL(clicked()), this, SLOT(ButtonReturnSlot()));

//创建管理学生窗口
managerstudent = new ManagerStudent;
ui->StackedManager->addWidget(managerstudent);
connect(ui->ButtonStudent, SIGNAL(clicked()), this, SLOT(ButtonStudentSlot()));
//创建管理教师窗口
managerteacher = new ManagerTeacher;
ui->StackedManager->addWidget(managerteacher);
connect(ui->ButtonTeacher, SIGNAL(clicked()), this, SLOT(ButtonTeacherSlot()));
//创建修改密码窗口
managerchange = new ManagerChange;
ui->StackedManager->addWidget(managerchange);
connect(ui->ButtonChange, SIGNAL(clicked()), this, SLOT(ButtonChangeSlot()));
connect(managerchange, SIGNAL(returnBlank()), this, SLOT(setbtnEnableSlot()));

//实现个功能窗口与管理窗口信号槽连接,用于设置button的属性
//connect(ManagerStudent, SIGNAL(EmitToManagerManage()), this, SLOT(setbtnEnableSlot()));
//connect(ManagerTeacher, SIGNAL(EmitToManagerManage()), this, SLOT(setbtnEnableSlot()));
//connect(managerchange, SIGNAL(EmitToManagerManage()), this, SLOT(setbtnEnableSlot()));
connect(managerchange,SIGNAL(newPassword()),this,SLOT(on_returnButton_clicked()));

}
ManagerManage::~ManagerManage()
{
delete ui;
}

void ManagerManage::ButtonExitSlot()
{
if(QMessageBox::question(this,"提示","是否退出系统?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)
{
this->close();
delete this;
}
}
void ManagerManage::ButtonReturnSlot()
{
if(QMessageBox::question(this,"提示","是否退出登录?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)
{
emit toLoginDialog();
delete this;
}
}

void ManagerManage::on_returnButton_clicked()
{
emit toLoginDialog();
delete this;
}
void ManagerManage::ButtonStudentSlot()
{
this->setbtnfalse();
managerstudent->show();
ui->StackedManager->setCurrentIndex(0);
}
void ManagerManage::ButtonTeacherSlot()
{
this->setbtnfalse();
managerteacher->show();
ui->StackedManager->setCurrentIndex(1);
}
void ManagerManage::ButtonChangeSlot()
{
this->setbtnfalse();
//this->hide();
managerchange->show();
ui->StackedManager->setCurrentIndex(2);
}


我点修改密码,结果弹出两个,怎么回事啊
...全文
329 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiuxianshen 2016-05-31
  • 打赏
  • 举报
回复
你直接调用setCurrentIndex应该就可以了为,不需要再去操作页面本身的显示的
冷静忍耐 2016-05-30
  • 打赏
  • 举报
回复
这几个应该没必要吧 managerstudent->show(); managerteacher->show(); managerchange->show();
刹那X逍遥 2016-05-30
  • 打赏
  • 举报
回复
(⊙v⊙)嗯,我解决了。

void ManagerManage::ButtonStudentSlot()
{
    this->setbtnfalse();
    //managerstudent->show();
    ui->StackedManager->setCurrentIndex(2);
}
void ManagerManage::ButtonTeacherSlot()
{
    this->setbtnfalse();
    //managerteacher->show();
    ui->StackedManager->setCurrentIndex(3);
}
void ManagerManage::ButtonChangeSlot()
{
    this->setbtnfalse();
    //managerchange->show();
    ui->StackedManager->setCurrentIndex(4);
}

void ManagerManage::setBlank()
{
    ui->StackedManager->setCurrentIndex(1);
    this->setbtntrue();
}

16,200

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧