qt 開發筆記堆棧布局的應用

1.概要

畫面中有一處位置,有個按鈕點擊后,這片位置完全換成另一個畫面,這中情況特別適合用堆棧布局。

//堆棧布局的應用
#include <QStackedLayout>
QStackedLayout *layout = new QStackedLayout(this);
layout->setCurrentIndex(0);?

//信號和槽的鏈接
QPushButton *foundButton = findChild<QPushButton *>("pushButton_2");
? ? if (foundButton) {
? ? ? ? // 連接點擊事件
? ? ? ? connect(foundButton, &QPushButton::clicked, this, &FormMy1::onButtonClicked);
? ? }

private slots:
? ? void onButtonClicked();

2.代碼

2.1?FormMy1

#ifndef FORMMY1_H
#define FORMMY1_H#include <QWidget>
#include <QStackedLayout>namespace Ui {
class FormMy1;
}class FormMy1 : public QWidget
{Q_OBJECTpublic:QStackedLayout *layout;explicit FormMy1(QWidget *parent = nullptr);~FormMy1();
private slots:void onButtonClicked();
private:Ui::FormMy1 *ui;
};#endif // FORMMY1_H
#include "formmy1.h"
#include "ui_formmy1.h"
#include <QPushButton>FormMy1::FormMy1(QWidget *parent): QWidget(parent), ui(new Ui::FormMy1)
{ui->setupUi(this);// 根據名稱查找按鈕QPushButton *foundButton = findChild<QPushButton *>("pushButton_2");if (foundButton) {// 連接點擊事件connect(foundButton, &QPushButton::clicked, this, &FormMy1::onButtonClicked);}
}void FormMy1::onButtonClicked() {// 處理按鈕點擊事件//qDebug("Button clicked!");layout->setCurrentIndex(1);
}FormMy1::~FormMy1()
{delete ui;
}

2.2?FormMy2

#ifndef FORMMY2_H
#define FORMMY2_H#include <QWidget>
#include <QStackedLayout>namespace Ui {
class FormMy2;
}class FormMy2 : public QWidget
{Q_OBJECTpublic:QStackedLayout *layout;explicit FormMy2(QWidget *parent = nullptr);~FormMy2();
private slots:void onButtonClicked();
private:Ui::FormMy2 *ui;
};#endif // FORMMY2_H

?

#include "formmy2.h"
#include "ui_formmy2.h"FormMy2::FormMy2(QWidget *parent): QWidget(parent), ui(new Ui::FormMy2)
{ui->setupUi(this);// 根據名稱查找按鈕QPushButton *foundButton = findChild<QPushButton *>("pushButton");if (foundButton) {// 連接點擊事件connect(foundButton, &QPushButton::clicked, this, &FormMy2::onButtonClicked);}
}void FormMy2::onButtonClicked() {// 處理按鈕點擊事件//qDebug("Button clicked!");layout->setCurrentIndex(0);
}FormMy2::~FormMy2()
{delete ui;
}

2.3?FormStacked

#ifndef FORMSTACKED_H
#define FORMSTACKED_H#include <QWidget>namespace Ui {
class FormStacked;
}class FormStacked : public QWidget
{Q_OBJECTpublic:explicit FormStacked(QWidget *parent = nullptr);~FormStacked();private:Ui::FormStacked *ui;
};#endif // FORMSTACKED_H
#include "formstacked.h"
#include "ui_formstacked.h"
#include <QStackedLayout>
#include "formmy1.h"
#include "formmy2.h"FormStacked::FormStacked(QWidget *parent): QWidget(parent), ui(new Ui::FormStacked)
{ui->setupUi(this);QStackedLayout *layout = new QStackedLayout(this);FormMy1* my1 = new FormMy1(this);my1->layout = layout;FormMy2* my2 = new FormMy2(this);my2->layout = layout;layout->addWidget(my1);layout->addWidget(my2);layout->setCurrentIndex(0); // 初始顯示第二個窗口部件//this->setLayout(layout);
}FormStacked::~FormStacked()
{delete ui;
}

?

2.4?Widget

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H

?

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}

2.5?main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

3.運行結果

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41049.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41049.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41049.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity Scrollview的Scrollbar控制方法

備忘&#xff1a;碰到用scrollview自帶的scrollbar去控制滑動&#xff0c;結果發現用代碼控制scrollbar.value無效&#xff0c;搜了一下都是說用scrollRect.verticalNormalizedPosition和scrollRect.horizontalNormalizedPosition來控制的。我尋思著有關聯的scrollbar為什么用不…

【代碼隨想錄算法訓練營第六十天|并查集、卡碼網107.尋找可能存在的路徑】

文章目錄 卡碼網107.尋找可能存在的路徑 并查集基礎內容還是看代碼隨想錄 并查集 卡碼網107.尋找可能存在的路徑 純并查集的基礎應用&#xff0c;并查集只是看元素是否在同一個集合中&#xff0c;因此在加入的時候需要先查看兩個元素是否已經在一個并查集中&#xff0c;如果不…

Interview preparation--Https 工作流程

HTTP 傳輸的弊端 如上圖&#xff0c;Http進行數據傳輸的時候是明文傳輸&#xff0c;導致任何人都有可能截獲信息&#xff0c;篡改信息如果此時黑客冒充服務器&#xff0c;或者黑客竊取信息&#xff0c;則其可以返回任意信息給客戶端&#xff0c;而且不被客戶端察覺&#xff0c;…

2.3.2 主程序和外部IO交互 (文件映射方式)----C#調用范例

2.3.2 主程序和外部IO交互 &#xff08;文件映射方式&#xff09;----C#調用范例 效果顯示 1 說明 1 .1 Test_IOServer是64bit 程序&#xff0c; BD_SharedIOServerd.dll 在 /Debug文件夾中 1 .2 Test_IOServer是32bit 程序&#xff0c; BD_SharedIOClientd.dll (32bit&#…

[FreeRTOS 內部實現] 事件組

文章目錄 事件組結構體創建事件組事件組等待位事件組設置位 事件組結構體 // 路徑&#xff1a;Source/event_groups.c typedef struct xEventGroupDefinition {EventBits_t uxEventBits;List_t xTasksWaitingForBits; } EventGroup_t;uxEventBits 中的每一位表示某個事件是否…

適用于Mac和Windows的最佳iPhone恢復軟件

本文將指導您選擇一款出色的iPhone數據恢復軟件來檢索您的寶貴數據。 市場上有許多所謂的iPhone恢復程序。各種程序很難選擇并選擇其中之一。一旦您做出了錯誤的選擇&#xff0c;您的數據就會有風險。 最好的iPhone數據恢復軟件應包含以下功能。 1.安全可靠。 2.恢復成功率高…

java MultipartFile multipartFile 文件上傳重命名

java MultipartFile multipartFile 文件上傳重命名 我們在文件上傳的時候&#xff0c;需要考慮重名覆蓋問題&#xff0c;為邏輯嚴謹&#xff0c;需要在文件上傳的時候&#xff0c;將文件名前方拼接UUID或者時間戳&#xff0c;來區分同名文件&#xff0c;但因此引出如何修改前端…

Windows下Visual Studio 中配置第一個CUDA工程

今天整NVIDIA 的CUDA 安裝和第一個CUDA 代碼&#xff0c;順便添加一個有CUDA工程的空框架。 &#xff08;1&#xff09;首先確認自己的CUDA 已經安裝成功 >>cmd 進入命令窗&#xff0c;在窗口輸入查看cuda 是否安裝成功&#xff0c;能查到CUDA的版本號&#xff0c;表示安…

VitePress安裝部署

VitePress安裝部署 VitePress安裝步驟 安裝 Node環境 官網下載&#xff1a;https://nodejs.org/zh-cn 傻瓜式安裝到完成 npm環境 安裝完Node環境之后&#xff0c;可以直接運行下面的命令安裝npm npm install -g pnpm關于pnpm源&#xff1a; 有時候需要國內源&#xff0c…

0706_ARM8

練習1&#xff1a; PWM控制蜂鳴器&#xff0c;風扇&#xff0c;震動馬達 pwm.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_tim.h"//蜂鳴器 PB6 TIME4_CH1 初…

基于python的數據分解-趨勢-季節性-波動變化

系列文章目錄 前言 時間序列數據的分解&#xff0c;一般分為趨勢項&#xff0c;季節變化項和隨機波動項。可以基于加法或者乘法模型。季節變化呈現出周期變化&#xff0c;因此也叫季節效應(周期&#xff09;。 一、數據分解步驟 &#xff08;1&#xff09;估計時間序列的長期…

儀器校準后出了校準證書后,是不是就代表儀器合格了?

儀器校準是一門技術活&#xff0c;對于從事生產制造的企業而言&#xff0c;是不可或缺的一環&#xff0c;因為這與產品質量密切相關。所以&#xff0c;了解儀器校準的相關知識也變得尤為重要。 在拿到校準證書后&#xff0c;是不是說明儀器合格了&#xff1f;相信不少企業品管人…

指針回顧.

指針的主要作用&#xff1a;提供一種間接訪問數據的方法 1.地址:區分不同內存空間的編號 2.指針:指針就是地址,地址就是指針 3.指針變量:存放指針的變量稱為指針變量,簡稱為指針 1.指針的定義 int *p NULL; int *q NULL; char *p NULL; double *p NUL…

PCDN技術如何提高內容分發效率?(貳)

PCDN技術通過以下方式提高內容分發效率: 1.利用用戶設備作為分發節點:與傳統的 CDN技術主要依賴中心化服務器不同&#xff0c; PCDN技術利用用戶的設備作為內容分發的節點。當用戶下載內容時&#xff0c;他們的設備也會成為內容分發的一部分&#xff0c;將已下載的內容傳遞給其…

第34集《大乘起信論》

好&#xff0c;請大家打開《講義》七十六頁&#xff0c; 子三、釋雙行 前面是把大乘的止跟大乘的觀&#xff0c;各別的說明&#xff0c;這個是針對初學的菩薩&#xff0c;應該是這樣修學的&#xff1b;這個地方是告訴我們的目標&#xff0c;應該使令自己在操作上最好是能夠止…

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

set_intersection(重要) 求兩個有序的序列的交集. 函數聲明如下: template<class InputIterator1, class InputIterator2, class OutputIterator>OutputIterator set_intersection(InputIterator1 _First1, //容器1開頭InputIterator1 _Last1, //容器2結尾(不包含)Inp…

jenkins配置gitee源碼地址連接不上

報錯信息如下&#xff1a; 網上找了好多都沒說具體原因&#xff0c;最后還是看jenkins控制臺輸出日志發現&#xff1a; ssh命令執行失敗&#xff08;git環境有問題&#xff0c;可能插件沒安裝成功等其他問題&#xff09; 后面發現是jenkins配置git的地方git安裝路徑錯了。新手…

加入新數據預測,基于黏菌優化算法SMA優化SVM支持向量機回歸預測(多輸入單輸出)

加入新數據預測&#xff0c;基于黏菌優化算法SMA優化SVM支持向量機回歸預測&#xff08;多輸入單輸出&#xff09; 1.數據均為Excel數據&#xff0c;直接替換數據就可以運行程序。 2.所有程序都經過驗證&#xff0c;保證程序可以運行。 3.具有良好的編程習慣&#xff0c;程序…

cmake find_package 使用筆記

目錄 1 find_package2 config mode2.1 搜索的文件名2.2 搜索路徑 3 module mode3.1 搜索的文件名3.2 搜索路徑 參考 1 find_package 這是官方文檔 下面是學習總結&#xff1a; 首先是find_package的作用是什么&#xff1f;引入預編譯的庫。 find_package有兩種模式&#xff1a…

error executing init.py No module name “imp“ ida

在某論壇下了個IDA&#xff0c;打開報錯No module name “imp”&#xff0c;這是由于高版本python已經移除了imp&#xff0c;新版使用import importlib。 1、打開文件D:\IDA_Pro_7.7\python\3\ida_idaapi.py 2、替換import imp 為 import importlib。 3、替換IDAPython_LoadPr…