资讯 更多 >>
香港电影“筑梦人”的幕后世界 天天信息
送女老师礼物前十件排名2020(送女...
长三角首个量超协同创新中心成立-天...
日照河山派出所破获一起拉车门盗窃...
天天时讯:金市展望:非农恐让美联...
零基础怎么学舞蹈_零基础怎么学cad
即刻种植间隙植骨VS.牙槽嵴保存术,...
未复有能与其奇者_自康乐以来未复有...
当前简讯:日照岚山:“茶乡法庭”护茶乡
古人作揖的正确方法_古人如何作揖_...
动态更多 >>
你们,温暖了2021
西安市新增27个中风险地区 目前有1...
广西新增本土确诊病例1例
哈尔滨市全域均为低风险地区
寒潮将影响我国中东部地区 四川盆...
昆明至哈尔滨一航班发现1名入境复阳...
陕西研考:封控区内考生在原报考点...
北京今日最高气温仅5℃ 明起强冷空...
那年今日 | 历史上的12月22日发生...
我要找债主
会展 更多 >>
美籍酿酒师在崇礼:中国是第二故乡...
河南项城报告2名疑似新冠肺炎病例 ...
浙江绍兴确诊病例首次零新增 上虞...
广西东兴实行全员居家隔离 启动口...
新疆全方位推进乡村振兴 “富春山...
云南瑞丽市主城区全员核酸检测结果...
内蒙古满洲里累计治愈出院本土确诊...
孙海洋夫妻驱车山东阳谷:还在为孙...
大国工匠追梦“玉米强国”40载:用...
让南海“海洋热带雨林”斑斓多彩
专题报道 
当前位置: 资讯 > >> 正文
 
Qt中QStackedLayout类用法(菜单页切换界面)
来源:QT教程     时间:2023-05-26 10:22:43

本文主要总结用QStackedLayout类的用法,主要通过新建一个实例,体现QStackedLaout类可以应用在切换菜单上。QStackedLaout类是属于布局管理器中的一个常用类。


(资料图片)

下面是一个实例,该实例是顶部两个菜单按钮,分别点击两个按钮,将会切换不同页面。比如点击pageOne按钮,则切换到第一页;点击pageTwo按钮,则切换到第二页。

新建一个widget工程,以及两个类,类名分别为PageOne和PageTwo。然后在如下文件添加代码:

#ifndef PAGEONE_H#define PAGEONE_H#include #include #include #include class PageOne : public QWidget{Q_OBJECTpublic:explicit PageOne(QWidget *parent = nullptr);signals:public slots:private:QVBoxLayout *pageOneLayout;QPushButton *m_pushButton;};#endif // PAGEONE_H

#include ""PageOne::PageOne(QWidget *parent) : QWidget(parent){pageOneLayout = new QVBoxLayout(this); //注意,this表示在这个widget窗口显示m_pushButton = new QPushButton;m_pushButton->setText(tr("成功切换到第一页!"));pageOneLayout->addWidget(m_pushButton);}

#ifndef PAGETWO_H#define PAGETWO_H#include #include #include #include class PageTwo : public QWidget{Q_OBJECTpublic:explicit PageTwo(QWidget *parent = nullptr);signals:public slots:private:QVBoxLayout *pageOneLayout;QPushButton *m_pushButton;};#endif // PAGETWO_H

#include ""PageTwo::PageTwo(QWidget *parent) : QWidget(parent){pageOneLayout = new QVBoxLayout(this); //注意,this表示在这个widget窗口显示m_pushButton = new QPushButton;m_pushButton->setText(tr("成功切换到第二页!"));pageOneLayout->addWidget(m_pushButton);}

#ifndef WIDGET_H#define WIDGET_H#include #include #include #include #include #include ""#include ""class Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();private slots:void On_PushButton1Result();void On_PushButton2Result();private:QVBoxLayout *mainLayout;QHBoxLayout *topLayout;QStackedLayout *stackLayout;QPushButton *m_pushButton1,*m_pushButton2;PageOne *m_pageOne;PageTwo *m_pageTwo;};#endif // WIDGET_H

#include ""Widget::Widget(QWidget *parent): QWidget(parent){//初始化this->setObjectName("mainWidget");this->setStyleSheet("#mainWidget{background-color:rgb(10,90,130);}");mainLayout = new QVBoxLayout;topLayout = new QHBoxLayout;stackLayout = new QStackedLayout;m_pushButton1 = new QPushButton;m_pushButton1->setText("pageOne");m_pushButton1->setFixedHeight(50); //设定按钮固定高度// m_pushButton1->setStyleSheet("color:rgb(255,0,0);border:none"); //设置按钮字体颜色,无边框// m_pushButton1->setFlat(true); //祛除边框m_pushButton2 = new QPushButton;m_pushButton2->setText("pageTwo");m_pageOne = new PageOne;m_pageTwo = new PageTwo;//窗口布局// topLayout->addWidget(m_pushButton1,0,Qt::AlignLeft | Qt::AlignCenter);topLayout->setMargin(0); //控件与窗体左右间距topLayout->setSpacing(0); //Layout内部控件间距topLayout->addWidget(m_pushButton1);topLayout->addWidget(m_pushButton2);stackLayout->addWidget(m_pageOne); //第一页stackLayout->addWidget(m_pageTwo); //第二页stackLayout->setCurrentIndex(0); //默认stackLayout显示第0页mainLayout->addLayout(topLayout); //顶部界面mainLayout->addLayout(stackLayout); //中间界面mainLayout->setMargin(0); //控件与窗体左右间距mainLayout->setSpacing(0); //Layout内部控件间距mainLayout->setStretchFactor(topLayout,1);mainLayout->setStretchFactor(stackLayout,10);setLayout(mainLayout); //设置唯一布局 这句也可以用mainLayout = new QVBoxLayout(this);替代connect(m_pushButton1,SIGNAL(clicked(bool)),this,SLOT(On_PushButton1Result()));connect(m_pushButton2,SIGNAL(clicked(bool)),this,SLOT(On_PushButton2Result()));}Widget::~Widget(){}void Widget::On_PushButton1Result(){//按钮1槽函数stackLayout->setCurrentIndex(0); //切换到stackLayout第一页}void Widget::On_PushButton2Result(){//按钮2槽函数stackLayout->setCurrentIndex(1); //切换到stackLayout第二页}

#include ""#include int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;();return ();}

【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】

点击这里:

关键词:

热门推荐
猜你喜欢