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);