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

43 篇文章 1 订阅
8 篇文章 0 订阅

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

 

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

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= "<<index;
}

void MainWindow::on_AlarmBtn_clicked()
{
    ui->stackedWidget->setCurrentWidget(alarm);
    index = ui->stackedWidget->currentIndex();
    qDebug()<<"index= "<<index;
}

void MainWindow::on_diskBtn_clicked()
{
    ui->stackedWidget->setCurrentWidget(disk);
    index = ui->stackedWidget->currentIndex();
    qDebug()<<"index= "<<index;
}


void MainWindow::on_lineEdit_textChanged(const QString &arg1)
{
    QString s1 = "开始";
    qDebug()<<"on_lineEdit_textChanged=="<<arg1;

    if(arg1.compare(s1) == 0)
    {
        ui->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:"<<GetQstringInt(str);
}

新添加的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);

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值