詳解Qt中QStackedWidget控件的使用

引言

QStackedWidget繼承自QFrame。

QStackedWidget類提供瞭多頁面切換的佈局,一次隻能看到一個界面。

QStackedWidget可用於創建類似於QTabWidget提供的用戶界面。

先來看看QTabWidget控件的效果:

需要註意的是: QTabWidget的currentTabText用於修改名稱。在插入頁中插入新的界面。

QStackedWidget的屬性

1️、接口(方法)

  • int addWidget(QWidget * widget) 添加頁面,並返回頁面對應的索引
  • int count() const 獲取頁面數量
  • int currentIndex() const 獲取當前頁面的索引
  • QWidget * currentWidget() const 獲取當前頁面
  • int indexOf(QWidget * widget) const 獲取QWidget頁面所對應的索引
  • int insertWidget(int index, QWidget * widget) 在索引index位置添加頁面
  • void removeWidget(QWidget * widget) 移除QWidget頁面,並沒有被刪除,隻是從佈局中移動,從而被隱藏。
  • QWidget * widget(int index) const 獲取索引index所對應的頁面

2️、信號

  • void currentChanged(int index) 當前頁面發生變化時候發射,index為新的索引值
  • void widgetRemoved(int index) 頁面被移除時候發射,index為頁面對應的索引值

3️、共有槽函數

  • void setCurrentIndex(int index) 設置索引index所在的頁面為當前頁面
  • void setCurre使用ntWidget(QWidget * widget) 設置QWidget頁面為當前頁面

一般情況,使用QStackedWidget常用的兩種方式:

根據currentWidget()來判斷當前頁面,然後通過setCurrentWidget()來設置需要顯示的頁面。

根據currentIndex()來判斷當前頁面索引,然後通過setCurrentIndex()來設置需要顯示的頁面。

實例演示

(實現QTabWidget的效果,用按鈕觸發切換界面)

編輯ui界面

編輯代碼(連接信號槽)

#include "layout.h"
#include"qlabel.h"
#include"qstackedwidget.h"
#include"qpushbutton.h"
#pragma execution_character_set("utf-8")
Layout::Layout(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    connect(ui.btn1, &QPushButton::clicked, [=]() {
        ui.stackedWidget->setCurrentIndex(1);
        });
 
    connect(ui.btn2, &QPushButton::clicked, [=]() {
        ui.stackedWidget->setCurrentIndex(2);
        });
 
    connect(ui.btn3, &QPushButton::clicked, [=]() {
        ui.stackedWidget->setCurrentIndex(0);
        });
}

效果展示

到此這篇關於詳解Qt中QStackedWidget控件的使用的文章就介紹到這瞭,更多相關Qt QStackedWidget內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: