QT中同界面添加多个组件窗口

1、打开Qt Creator,新建一个Qt Widgets Application项目,添加控件Stacked Widget和PushButton,然后再添加3个子窗口类

QT中同界面添加多个组件窗口_第1张图片

 

子窗口类可有自己任意定义,创建好后将头文件引入主窗口类,并定义子类的对象为主类私有变量,方便成员函数访问。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    alarm = new Alarm(this);
    cfg   = new Config(this);
    disk  = new Disksystem(this);
    //添加生成的子界面
    ui->stackedWidget->addWidget(alarm);
    ui->stackedWidget->addWidget(cfg);
    ui->stackedWidget->addWidget(disk);

    ui->stackedWidget->setCurrentWidget(cfg);

}

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

QString MainWindow::GetQstringInt(QString arg)
{
    QString tmp;
    for(int j = 0; j < arg.length(); j++)
    {
        if(arg[j] > '0' && arg[j] < '9')
        tmp.append(arg[j]);
    }
    return tmp;
}

void MainWindow::on_CfgBtn_clicked()
{
    ui->stackedWidget->setCurrentWidget(cfg);
    index = ui->stackedWidget->currentIndex();
    qDebug()<<"index= "<stackedWidget->setCurrentWidget(alarm);
    index = ui->stackedWidget->currentIndex();
    qDebug()<<"index= "<stackedWidget->setCurrentWidget(disk);
    index = ui->stackedWidget->currentIndex();
    qDebug()<<"index= "<stackedWidget->setCurrentIndex(1);
        qDebug()<<"setCurrentIndex==1";
        return;
    }
    else {
//           i++;
    }

}

void MainWindow::on_pushButton_2_clicked()
{
    this->close();
}

void MainWindow::on_treeWidget_itemPressed(QTreeWidgetItem *item, int column)
{
    QString str = item->text(column);
    qDebug()<<"channel num:"<

新添加的Stacked Widget控件是有两个空白页面可以切换的,页面的索引是从0开始的,也就是说两个空白页面占据了0和1,如果新添加了页面,那就是索引号从2开始。还要注意的是页面有两种切换方式,一种是索引号,另外一种是按窗口名称,窗口名称这种在切换的时候不太好用,会报错,最好还是使用索引号。

    //获取页面的数量
    int nCount = ui->stackedWidget->count();
    //获取当前页面的索引
    int nIndex = ui->stackedWidget->currentIndex();
    //获取下一个需要显示的页面索引
    nIndex++;
 
    //当需要显示的页面索引大于等于总页面时,切换至首页
    if (nIndex >= nCount)
    {
        nIndex = firstIndex;
    }
 
    //显示当前页面
    ui->stackedWidget->setCurrentIndex(nIndex);

你可能感兴趣的:(笔记,QT,c++,c++,qt)